日本华人论坛 c语言的东西,这句子是干啥的?
日本 - 但是*指针和 指针的指针 是不一样的 虽然buf的结果一样 但是指向buf 指针的指针结果改变了
评论
值和地址的区别
评论
buf完全没听说过 杯具了。。。。
评论
#include <stdio.h>
char buf[10] = "hello";
void pro(char *out)
{
out = buf;
}
main()
{
char *p = NULL;
pro(p);
printf("%s\n", p);
}
我们想在函数pro()中改变指针p的值(记住:是指针p的值,而不是p所指向的地址的值)。能实现吗?
结果是不能,为什么?
如果不用函数pro(),我们可以直接在主函数中用 p = buf 来实现。如果使用函数pro(),就变得稍微复杂了。
因为我们要在函数pro()中改变指针p的值,而函数pro()又没有返回值,如何记住这个改变呢?
我们可以先用简单的例子说明:
#include <stdio.h>
void pro(char *out)
{
out[1] = 'o';
}
main()
{
char *p = "hello";
pro(p);
printf("%s\n", p);
}
这个例子是改变了字符串指针p所指向的字符串的指,它能记住这个改变是因为在函数中是对指针所指向的地址
空间进行操作。你明白了吗?也就是说,函数的参数是char *out,我们可以改变 *out,但改变不了out本身。
所以针对第一个例子,我们要想改变p,必须把&p当作参数传给函数pro()。修改后的例子如下:
#include <stdio.h>
char buf[10] = "hello";
void pro(char **out)
{
*out = buf;
}
main()
{
char *p = NULL;
pro(&p);
printf("%s\n", p);
}
日本 Japan
·日本中文新闻 日本26年新成人预估仅109万 与去年并列历史第二低
·日本中文新闻 日本皇居新年参贺突发裸奔事件 男子涉公然猥亵被捕
·日本中文新闻 印度宣布超越日本成为全球第四大经济体
·日本留学生活 在熟悉的城市,遇見不一樣的感受
·日本留学生活 求购一些水电燃气话费等公共料金请求书
·日本华人网络交流 制造信息垃圾的产业,这种现象在日本尤其普遍。
·日本华人网络交流 美军入侵 委内瑞拉领空 并非零伤亡
·日本华人网络交流 年末采购食品,恰时间就能全半价。
·中文新闻 马丁·克鲁内斯 (Martin Clunes) 在新剧中变身休·爱德华兹 (Huw Edw
·中文新闻 当朋友们讲述他们对他们的阴谋感到震惊以及他们如何向他们隐