各位大侠声明一个指针(int *p;)后是不是系统就给这个指针自动分配了个地址?这个地址是什么?没有用的?是不是*p就可能覆盖了这个地址原有的数据?
是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?
其实是已经分配了地址!
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编辑过]
int a=77
int *p=&a
这样有错吗?