这两个指针操作相似为什么有质的不同?
如题:
#include "stdafx.h"
#include "stdio.h"
int main(void)
{
int (*q)[3];
int *p;
int ar[3];
ar[0] = 10;
ar[1] = 20;
ar[2] = 30;
q = &ar;
*q = ar;
printf("%d\n", *(*q+2));
printf("%d\n", *(ar+2));
p = ar;
*p = ar[0];
return 0;
}
编译时提示这里“*q = ar;”'=' : left operand must be l-value;但是我下面的一维指针的操作与它相似不会报错,为什么?
[解决办法]
*q = ar;*q表示向q指针指向的内存写入数据 但是q指向的内存只能存int类型的 明显 ar是不对的 ar是数组首地址啊
*p = ar[0];ar[0]表示已经取出数值了 而且也符合指针的类型 所以没问题