标签:
1 int matrix[3][3]; 2 int* pm=matrix;
数组类型:由数组元素的类型和数组的大小共同决定。
int array[5];数组类型为:int[5] 表示5个连续的int类型空间
定义数组类型:
typedef type(name)[size]
1 typedef int(INT5)[5]; 2 INT5 array 等价于 int array[5]
数组指针:
1、可以通过数组类型定义数组指针:
1 int a[5]; 2 int* p=&a;
再次强调:
这里的a与&a虽然值相等,但是意义不同,a表示连续空间的第一个元素空间的地址;&a表示连续空间的地址,他们的区别体现在指针运算中:a+1与&a+1。
*(p+1)=a[1]
2、直接定义:
int (*p)[5];
1 #include <stdio.h> 2 3 typedef int(AINT5)[5]; 4 typedef float(AFLOAT10)[10]; 5 typedef char(ACHAR9)[9]; 6 7 int main() 8 { 9 AINT5 a1; 10 float fArray[10]; 11 AFLOAT10* pf = &fArray; //定义了数组指针:pf,指针类型:float* 。它指向float[10]类型数组,并初始化 12 ACHAR9 cArray; 13 char(*pc)[9] = &cArray; //定义了数组指针:pc,指针类型:char* 。它指向int[9]类型数组,并初始化 14 char(*pcw)[4] = cArray; //定义了数组指针:pcw,指针类型:char* 。它指向char[4]类型数组,并初始化 15 16 int i = 0; 17 18 printf("%d, %d\n", sizeof(AINT5), sizeof(a1)); //5*4 19 20 for(i=0; i<10; i++) 21 { 22 (*pf)[i] = i; //(*pf)[1]=1:表示fArray[1]=1 23 } 24 25 for(i=0; i<10; i++) 26 { 27 printf("%f\n", fArray[i]); 28 } 29 30 printf("%0X, %0X, %0X\n", &cArray, pc+1, pcw+1); 31 }
指针数组:
指针数组中每个元素为一个指针:
float* a[3];表示定义了float*类型的三个指针变量
标签:
原文地址:http://www.cnblogs.com/data1213/p/4826336.html