以下程序从理论上是正确的还是错误的? 在TC++ 3.0 环境没有任何编译和连接的警告或错误,运行结果正确。
我想问的核心问题是:程序没有明确地为指针p分配地址,这时会自动分配合理地址吗?会不会胡乱分配?可能我们多数时不这样使用指针,但是我必须把它搞明白。请指教。
#include "stdio.h"
void main() { int *p; *p=77; printf("%d\n",*p); }
以下程序从理论上是正确的还是错误的? 在TC++ 3.0 环境没有任何编译和连接的警告或错误,运行结果正确。
我想问的核心问题是:程序没有明确地为指针p分配地址,这时会自动分配合理地址吗?会不会胡乱分配?可能我们多数时不这样使用指针,但是我必须把它搞明白。请指教。
#include "stdio.h"
void main() { int *p; *p=77; printf("%d\n",*p); }
以上程序到是能运行,但*P是指针变量,上面*p=77也是合理。原因就是如果你是*p=77而不是p=77就会能运行,指针加*可以当变量来使用可以附值。不加*就是指针附值只能对它的地址进行操作,不会对它的数值进行操作。
以下程序从理论上是正确的还是错误的? 在TC++ 3.0 环境没有任何编译和连接的警告或错误,运行结果正确。
我想问的核心问题是:程序没有明确地为指针p分配地址,这时会自动分配合理地址吗?会不会胡乱分配?可能我们多数时不这样使用指针,但是我必须把它搞明白。请指教。
#include "stdio.h"
void main() { int *p; *p=77; printf("%d\n",*p); }
严重错误!
好好看看书!
我想上面的程序,是不会有问题的,因为在申请 int *p时已经给了地址了,这个地址肯定没有问题的是不是???
就象yms123 所说把它当变量用不会有问题吧???
但如果用*(p+n)=X;就有问题了,因为你不知道它里面原来存的什么数据,是不是
knocker???我现在又迷糊了!!!
#include "stdio.h"
void main() { int *p;//编译程序是会给p变量分配一个空间(一个地址),这个空间的指定你是干涉不了的,是编译程序的事。但是,p变量未经初始化其内容(即分配给p的地址中的数据)是随机的
*p=77;//那么,这句是什么意思?是以p变量的内容(即分配给p的地址中的数据)为地址的空间进行赋值,你想想这会造成什么后果? printf("%d\n",*p); }