C语言 指针 赋值

#include <stdio.h>
int main()
{
    int* p;
    *p=8;
    printf("%d\n",*p);
}

这个怎么错了, 给p指向的内存赋值啊?

阅读 6.8k
7 个回答

指针必须指向一个对象, 而你代码中的p指针,没有指向任何对象, 所以一定会报错. 至少要这样int *p ; int a ; p = &a;

试试

#include <stdio.h>
int main()
{
int a;
int *p=&a;
*p=8;
printf("%d\n",*p);
}

int* p;*p=8;这两个语句是声明了一个没有初始化的指针,然后给指针指向的内存区域赋值。
因为指向区域不受保护,可能被其他操作覆盖,这时候有可能会输出乱码,编译器不报错但会有警告。

定义了一个野指针,内存不安全

指针的意义在于它指向一段内存,然后你通过指针可以去操作那段内存。你只是声明了一个指针,并没有让它指向某段内存。然后你让一段“并不存在”的内存保存一个值8,当然要报错了。

 这是一个情人节没有对象的野指针!

指针未分配内存。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进