#include <stdio.h>
int main()
{
int* p;
*p=8;
printf("%d\n",*p);
}
这个怎么错了, 给p指向的内存赋值啊?
#include <stdio.h>
int main()
{
int* p;
*p=8;
printf("%d\n",*p);
}
这个怎么错了, 给p指向的内存赋值啊?
int* p;
和*p=8;
这两个语句是声明了一个没有初始化的指针,然后给指针指向的内存区域赋值。
因为指向区域不受保护,可能被其他操作覆盖,这时候有可能会输出乱码,编译器不报错但会有警告。
指针的意义在于它指向一段内存,然后你通过指针可以去操作那段内存。你只是声明了一个指针,并没有让它指向某段内存。然后你让一段“并不存在”的内存保存一个值8,当然要报错了。
指针必须指向一个对象, 而你代码中的p指针,没有指向任何对象, 所以一定会报错. 至少要这样
int *p ; int a ; p = &a;