我个人觉得 int *p=77; 是很危险的........我写菜单程序的时候需要保存被覆盖的图象,结果没注意,就犯了这样的错误,一下子就存了几百的数据覆盖到了系统地址,马上被强行终止了.....
学好、用活指针真是学C语言的一大难点啊!!!!!
淘宝杜琨
我个人觉得 int *p=77; 是很危险的........我写菜单程序的时候需要保存被覆盖的图象,结果没注意,就犯了这样的错误,一下子就存了几百的数据覆盖到了系统地址,马上被强行终止了.....
学好、用活指针真是学C语言的一大难点啊!!!!!
是不是说: 在初始化之前一定不要赋值,否则p会随机找一个地址,然后把值赋给这个随机地址
[/QUOTE]
对 int *p=77 这样写后果的确是难以想象的 至于什么后果我没有试过 只知道理论上行不通 不过你也可以实践一下
谢谢,不过还是不太明白!!!!
满脑子浆糊了!!!
我在一个程序中象 int *p=77;这样定义了几十个指针也没有出现调处程序的现象!!!
现在能做的就是用最规范的方式使用指针!!!
这样肯定是不行的。我不知道你是否理解了 int *p=77;?如果你这样在一个程序中定义了几十个,而未对p(或者是p们,哈哈,几十个当然得称为“们”了)进行操作,当然是无影响的。
但是,如果你后续程序中对p们进行了写操作(即赋值,)程序还是能正常行的话,那么,我要恭喜你了,快去买彩票,你要中大奖了!
另:建议斑竹将此贴置顶一星期,对指针不够了解的人看看有好处。
[此贴子已经被作者于2004-08-06 23:53:48编辑过]
我对他们进行符值了,不出问题,就是警告!!!
我想成这样:int *p=77;是对指针申请的两个字节的存放地址空间值的变化,这个可以,因为你已经申请了空间说明这个
空间没有被利用在后面也不会被利用,所以你可以改变不会有问题(但并不是说他对,只是说这一句不会引起乱符值,但
你申请指针就是要用,如果这样写在后面用的时候还是要符值,不能直接就用!!!!);但如果在定义完后用*p=77;
就不对了,因为这时候改变的已经不是指针申请两个字节空间的内容的改变,而是改变以这两个字节中内容为地址的空
间的内容,因为它指的地址不确定所以会出现错误!!!同时,我想关于上面int *p=77;不可以,而char
*p="77777777777";可以,是不是又可以理解为:因为C的机制的原因,char *p="777777777777";可以的原因是因为,
两个字节的空间不可能同时存下这个空间,所以C会自己申请空间,同时把这个空间的首地址符给p.
各位大侠声明一个指针(int *p;)后是不是系统就给这个指针自动分配了个地址?这个地址是什么?没有用的?是不是*p就可能覆盖了这个地址原有的数据?
是不是 *p=77; 是错误的? 如果 int a=77; *p=a; 错了没有?? 那 int a=77; p=&a; 是对是错?
[此贴子已经被天使预备役于2004-08-11 09:09:33编辑过]