C语言程序设计:指向一位数组的指针变量 int (*p)[n]

从名字上听起来这个int (*p)[n]是个指针,那么肯定跟int *p[n]是有区别的

下面,先看看我的练习代码:

#include <stdio.h>
#include <iostream>
#include <string.h>

using namespace std; 

#define LEN sizeof(a)/sizeof(int)
int main()
{
	int a[]={1,2,3,4};
	int (*p)[LEN];
	p=&a;
	

	printf("a:%d\n",a);
	printf("&a:%d\n",&a);

	int i;
	for(i=0;i<LEN;i++)
		printf("%d \t",*(*p+i));

	
	return 0;
}
执行结果如下:



大家看,这个例子也是把数组a的元素依次打印出来,我有一个问题留给大家:


既然 a和&a的地址一样,为何只能p=&a;这样赋值,而不可以p=a呢?


答案:

 a代表一个整形的地址   &a 代表的是数组长度为4的整形的 首地址 虽然地址是同一个  ,但是数据类型不同,所以赋值会出错

你可能感兴趣的:(数组指针,C语言程序设计)