我想明白了!!!谢谢!!!!
声明时是分配了内存,但里面的内容是不定的,而*p=77;就是对这个未定的内容表示的地址的内
容进行改变了,因为不确定,所以不可以轻易的改!!!
如果写成 int *p=77;对么????
[此贴子已经被作者于2004-08-06 13:11:26编辑过]
从语法上说是对的!
这是在静态存储区分配的空间,亦即他是字符串常量.相当于const char *p="fffffffffffffff";
当然不同的编译器可能是不一样的!
如果要对指针有更多的了解,请参考林锐的<高质量c/c++程序设计>.
我个人理解,非常明显任何我们程序员编的程序都要经过编译器的编译才能被机器执行(至少目前是这样),
char *p="fffffffffffff";是编译器的行为,即编译器要对字符串"fffffffffffff"分配存储空间;
而int *p=77;是我们程序编制者的行为,即人为的分配空间,
但是编译器为我们提供了分配内存空间和释放内存空间的函数
在c语言中为:malloc和free,在c++中为new和delete.
而编译器对char *p="fffffffffffff";的操作有定义,即编译器要对字符串"fffffffffffff"分配存储空间;
而int *p=77;虽然从语法上没有什么问题,但是却可能存在逻辑错误!
简单的说:
也就是我们不能乱用指针,实际上就是不能乱对内存空间操作,必须利用库函数,除非你能完完全全跟踪电脑的行为!
或者你是操作系统方面的高手或编译器方面的高手,直接修改操作系统或者编译器之后还没有任何副作用!
谢谢,不过还是不太明白!!!!
满脑子浆糊了!!!
我在一个程序中象 int *p=77;这样定义了几十个指针也没有出现调处程序的现象!!!
现在能做的就是用最规范的方式使用指针!!!
[此贴子已经被作者于2004-08-06 15:08:06编辑过]