程序出错的原因

来源:百度知道 编辑:UC知道 时间:2024/06/06 23:54:39
int a[]={1,2,3,4,5,6,7,8,9,10};
int *p=a+5,*q=NULL;
*q=*(p+5);

是不是应该改成*q=p+5

你的q指针没有指向一个有较的空间。
应该先这样
int tmp;
q = &tmp;
然后*q=*(p+5); 就可以了。

1、应该改成q=p+5,指针给指针赋值。

2、p已经指向a[5](p=a+5)了,p+5就已经越界了。

*q = *(p+5)的意思是把指针(p+5)所指向的值赋给q指针所指向的地址空间,而你的指针*q = NULL,所以会出错。你也可以改成q=p+5语法上是对的,但越界!不能改成*q=p+5;