日本华人论坛 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
·日本中文新闻 唐田绘里香为新剧《极恶女王》剃光头 展现演员决心
·日本中文新闻 真子小室夫妇新居引发隐私担忧
·日本中文新闻 前AKB48成员柏木由纪与搞笑艺人交往曝光
·日本学校 {日本国际学校}梅田インターナショナルスクール
·日本学校 LINE:sm287 陳雨菲、20歳、台湾からの留学生、東京に来たばかり
·日本留学生活 出售平成22年走行48000km 代步小车
·日本华人网络交流 円相場 一時1ドル=140円台まで上昇?
·日本华人网络交流 问日本华人一个问题
·日本旅游代购 富山接机
·生活百科 英国转澳大利亚转换插头
·汽车 【求助】修车遇到困难怎么办?