各位大侠声明一个指针(int *p;)后是不是系统就给这个指针自动分配了个地址?这个地址是什么?没有用的?是不是*p就可能覆盖了这个地址原有的数据?
是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?
各位大侠声明一个指针(int *p;)后是不是系统就给这个指针自动分配了个地址?这个地址是什么?没有用的?是不是*p就可能覆盖了这个地址原有的数据?
是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?
2004-08-10 20:11
2004-08-10 20:25
int *p ; /*只是定义了一个指针变量,没有分配地址*/
在使用指针变量之前必须给指针变量赋值,
int a=1,*p=&a;
这时p指向a的地址
2004-08-10 20:35
其实是已经分配了地址!
main() { int *p; int i;
printf("%d %d\n",&i,p); /*-64,1366*/
getch(); } 这个程序是输出变量i和指针*p的地址, 大家可以看到程序的答案是-64和1366
要声明的是,这个程序是在标准模式下编译的.
可以看到-64,和1366分开得很远(其实对于我们要处理成千上万的数据来说,这两个地址简直就是邻居) 所以只定义一两个指针而不去重新定义他们的地址并不会损害小程序,所以编译器一般都是警告了帐.但是,如果你写的是大程序,而且你又有这样乱 定义指针而不规定地址的情况,很容易就会造成覆盖数据这样的情况出现.
打个比方,如果a的数据很长,长到了1366.那么如果随便用*p指向的地址写入新的数据的话,就会覆盖掉了a原来的数据.
以上是我的个人不成熟的看法,其他人的看法可以参照精华帖子
[此贴子已经被作者于2004-08-10 21:30:43编辑过]

2004-08-10 21:23
是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?
1 的效果是指针指向77,正确但不知道安全不安全
2 p指向的内容=77 正确
3也是正确的
[此贴子已经被作者于2004-08-10 22:26:08编辑过]

2004-08-10 21:25
是不是 *p=77; 是错误的?//运行错 如果 int a=77; *p=a; 错了没有??//运行错 那 int a=77; p=&a; 是对是错?//编译、运行都不错。
因为只有最后一种才是改变了指针P的指向。
2004-08-10 21:58
我不理解你所谓的运行错是什么
但是,所有的例子除了[3]的指针的指向改变之外.其他都没有改变
[1] 为指向 77 没变
[2] 把p指的赋值为77
[3] 我不用说了吧,你已经理解了
[此贴子已经被作者于2004-08-10 22:27:07编辑过]

2004-08-10 22:20

2004-08-11 16:18
int a=77
int *p=&a
这样有错吗?

2004-08-11 17:00