C语言指针的问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:44:07
#include"stdio.h"
main()
{ int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
*q=*(p+6);
printf("%d %d \n",*p,*q);
}
请问:程序运行,输出6 12后有一行提示:"Null pointer assignment",是什么造成的?这算是程序出错吗?
谢谢!
我知道问题出在"*q=NULL",请具体解释一下这条语句.

指针q没有分配地址,*q=*(p+6);这条语句 只是把*q那块区域写上了数据,所以能输出数据,但同时也提示出了错误.我只是想的,不知道对不对.

q是指针,没有指向的内存,当然不能赋值。
int c;
int *q = &c;
现在就可以赋值了,或者就q = p+6,也可以

你把*q=*(p+6);
改成 q=p+6;
就好了!
因为你的q指向的是NULL 应该改成别的!
还有 你的 mian()前要加void 的!