我想明白了!!!谢谢!!!!
声明时是分配了内存,但里面的内容是不定的,而*p=77;就是对这个未定的内容表示的地址的内
容进行改变了,因为不确定,所以不可以轻易的改!!!
如果写成 int *p=77;对么????
[此贴子已经被作者于2004-08-06 13:11:26编辑过]
我个人理解,非常明显任何我们程序员编的程序都要经过编译器的编译才能被机器执行(至少目前是这样),
char *p="fffffffffffff";是编译器的行为,即编译器要对字符串"fffffffffffff"分配存储空间;
而int *p=77;是我们程序编制者的行为,即人为的分配空间,
但是编译器为我们提供了分配内存空间和释放内存空间的函数
在c语言中为:malloc和free,在c++中为new和delete.
而编译器对char *p="fffffffffffff";的操作有定义,即编译器要对字符串"fffffffffffff"分配存储空间;
而int *p=77;虽然从语法上没有什么问题,但是却可能存在逻辑错误!