读书人

这两个指针操作相像为什么有质的不同

发布时间: 2013-10-07 19:41:22 作者: rapoo

这两个指针操作相似为什么有质的不同?
如题:

#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]表示已经取出数值了 而且也符合指针的类型 所以没问题

读书人网 >C语言

热点推荐