小春网

 找回密码
 注册账号
查看: 2175|回复: 30
收起左侧

[问题讨论] c语言的东西,这句子是干啥的?

[复制链接]
头像被屏蔽
发表于 2009-11-16 16:17:14 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
 楼主| 发表于 2009-11-19 12:18:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2009-11-19 13:35:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
发表于 2009-11-19 13:37:53 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2009-11-19 16:48:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-11-19 17:13:34 | 显示全部楼层
但是*指针和 指针的指针  是不一样的  虽然buf的结果一样 但是指向buf 指针的指针结果改变了
回复

使用道具 举报

发表于 2009-11-19 17:36:00 | 显示全部楼层
值和地址的区别
回复

使用道具 举报

发表于 2009-11-19 17:53:29 | 显示全部楼层
buf完全没听说过  杯具了。。。。
回复

使用道具 举报

头像被屏蔽
 楼主| 发表于 2009-11-19 18:02:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-11-19 19:19:55 | 显示全部楼层
#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);
     }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小春网
常务客服微信
微信订阅号
手机客户端
扫一扫,查看更方便! 快速回复 返回顶部 返回列表