#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d,%d",*p,*q);
}
为什么报错,内存不能为“written"
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;
*q=*(p+5);
printf("%d,%d",*p,*q);
}
为什么报错,内存不能为“written"
因为
*q=*(p+5);
中,q的初始值为NULL(即0),而该地址的内存空间是只读的,受保护的,所以给它赋值是不允许的。
*q=NULL
这句话有问题
因为q指针的值为null 他可能指向系统的内存内容
如果给他赋值的话 会引起系统错误 因此 *q=*(p+5); 这样不行
可以吧*q=null 改为 *q=a 之类的 有指向确定的值的
就对了
这里定义为空,*q=NULL;
再用*q=*(p+5)去指向它并赋值当然会错
我帮你改好运行一下就对了
#include "stdio.h" int main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL; q=(p+5); printf("%d,%d",*p,*q);
}