免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3261 | 回复: 15
打印 上一主题 下一主题

[C] 关于一个指针的指针的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-21 16:09 |只看该作者 |正序浏览
编写了一个函数如下:
#include <stdio.h>
int test1(int **number)
{
    *number = 1;
}
int main()
{
    int *number;
    test1(&number);
    printf("number=%d",*number);
}

编译出现警告,执行时出现错误,请问一下哪里出现了错误,为什么?
谢谢!

论坛徽章:
0
16 [报告]
发表于 2008-02-22 22:58 |只看该作者
谢谢分享!!!!!!!!!!!!!支持!!!!!!!!!!!

论坛徽章:
0
15 [报告]
发表于 2008-02-22 21:45 |只看该作者
谢谢楼上的各位,明白了!

论坛徽章:
0
14 [报告]
发表于 2008-02-22 14:20 |只看该作者
#include <stdio.h>
int test1(int **number)
{
    *number = (int *)1;//强制转换
}
int main()
{
    int *number;
    test1(&number);
    printf("number=%p\n",number);
}

论坛徽章:
0
13 [报告]
发表于 2008-02-21 17:35 |只看该作者
呵呵,明白明白,谢谢指教

论坛徽章:
0
12 [报告]
发表于 2008-02-21 17:34 |只看该作者
原帖由 ck_lai 于 2008-2-21 17:30 发表
我也认为是等于对地址1的解引用阿,我觉得应该是错的阿,但是实习
斑竹说我看错了所以就编译运行来看看咯,呵呵

你看对了的,版主应该是误会你的意思了。
你看版主把打印解引用1的地址改成打印地址1了,就知道你和版主看的其实是一样的。

论坛徽章:
0
11 [报告]
发表于 2008-02-21 17:32 |只看该作者
原帖由 ck_lai 于 2008-2-21 17:30 发表
我也认为是等于对地址1的解引用阿,我觉得应该是错的阿,但是实习
斑竹说我看错了所以就编译运行来看看咯,呵呵



cat的修改:
printf("number=%p", number);

是阻止了惨剧的发生.

所以说你看错了. 编译警告是1赋值的过程.

论坛徽章:
0
10 [报告]
发表于 2008-02-21 17:30 |只看该作者
我也认为是等于对地址1的解引用阿,我觉得应该是错的阿,但是实习
斑竹说我看错了所以就编译运行来看看咯,呵呵

论坛徽章:
0
9 [报告]
发表于 2008-02-21 17:27 |只看该作者
原帖由 ck_lai 于 2008-2-21 17:25 发表



我不是编译运行我的那个等价的程序,是LZ的程序。。。


都一样...都等价还不是都死....int *numbe = 1; *number..对1解引用???

论坛徽章:
0
8 [报告]
发表于 2008-02-21 17:25 |只看该作者
原帖由 Edengundam 于 2008-2-21 17:22 发表
不fault还做什么??

1. 函数参数名称与实际参数名称同名, 但类型不同 ==> 不好.
2. 函数中*number = 1 类型不匹配 ==> 警告;
3. print时候, 解引用地址1...==> 找死....



我不是编译运行我的那个等价的程序,是LZ的程序。。。
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP