浏览 3143 次
锁定老帖子 主题:重拾c之指针理解
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-22
//指针 #include "stdafx.h" //传了一个地址过来,本来目的是对这个地址指向的内容进行改变,但是这个方法中又对*b指针变量重新指向了另外一个地址。 int testb(int *b){ int c=456; b=&c; //地址变了 printf("%d\n",*b); return 1; } //真正的传址应该这样:传一个地址到方法中,然后方法中不能改变这个地址,只能对这个地址指的内容进行改变 //因为方法调用完毕后,并不会将main中的地址改变(它是一个局部变量), 要变只能将传过来的地址存放的内容进行改变,才能反应到main中的那个地址 int testc(int *b){ *b=777; //地址没有改变,地址存放内容改变 printf("%d\n",*b); return 1; } int main(int argc, char* argv[]) { int *b; int c=123; b=&c; testb(b); printf("%d\n",*b); testc(b); printf("%d\n",*b); return 0; } 传址时把地址传到方法中,对这个址改变了是不会把main方法的指针变量改变。两个地址存放各自值,结果还是老的那个地址的值。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-17
你想说明啥,testc的局部变量int *b是main的局部变量int *b的一个COPY
|
|
返回顶楼 | |
发表时间:2008-09-17
4啊,不知道樓主到底要說什么
|
|
返回顶楼 | |
发表时间:2008-09-27
b是局部变量,指针的地址不变,但内容可变,
|
|
返回顶楼 | |
发表时间:2008-10-01
没有说明啥,就是复习下指针.
就是简单的说明了 testb函数并不能正确传值. 就像楼上imjie说的testb函数里的b是局部变量,而且b是地址,b变了,但是main里头的b还是原来的地址值,内容不变. |
|
返回顶楼 | |