#include结果int main() { int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int i; int j; int (*p)[4];//定义一个指针,指向一个数组,让指针偏移的时候,偏移对应数组的大小 p = array; //数组指针等同于二维数组名 for(i=0;i<3;i++){ for(j=0;j<4;j++){ printf("%d ",*(*(p+i)+j)); //printf("%d ",*(*(array+i)+j)); //printf("%d ",array[i][j]); //printf("%d ",*(array[i]+j)); } putchar('n'); } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12与二维数组运用
#include结果void hintInputData(int *phang,int *plie) { printf("请输入行列值:n"); scanf("%d%d",phang,plie); } int getData(int (*p)[4],int hang,int lie)//标准的写法为'int (*)[4]',不能写成int *(p)[4] { int data; data = *(*(p+hang)+lie); //return array[hang][lie] return data; } int main() { int array[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int hang,lie; int data; hintInputData(&hang,&lie); data=getData(array,hang,lie); printf("第%d行%d列的值为:%dn",hang,lie,data); return 0; }
请输入行列值: 2 3 第2行3列的值为:12指针数组 什么是指针数组
一个数组,若其元素均为指针类型数据,称为指针数组,也就是说,指针数组中的每一个元素都存放一个地址,相当于一个指针变量。下面定义一个指针数组:
int * p[4];
由于[ ]比* 优先级高,因此p先与[4]结合,形成p[4]形式,这显然是数组形式,表示p数组有4个元素。然后再与p前面的* 结合,* 表示此数组是指针类型的,每个数组元素(相当于一个指针变量)都可指向一个整型变量。
注意不要写成
int (* p)[4];//这是指向一维数组的指针变量
#include结果int main() { int a = 10; int b = 20; int c = 30; int d = 40; int i; int *p[4]={&a,&b,&c,&d};//定义指针数组,存放abcd的地址 for(i=0;i<4;i++){ printf("%d ",*(p[i])); } return 0; }
10 20 30 40函数指针数组
#includeint getMax(int data1,int data2) { return data1>data2?data1:data2; } int getMin(int data1,int data2) { return data1 结果 ret = 20 ret = 10 ret = 30欢迎分享,转载请注明来源:内存溢出
评论列表(0条)