C语言
-
数组和多为数组、
-
指向多维数组的指针和指针变量、
-
数组名代表数组的首地址、
-
int a[3][4]; int b, c; for (b = 0; b< 3; b++) { for (c = 0; c < 4; c++) { a[b][c] = 16; } } int* d; d = (int *)(a + 1);//(int *)是强制转换的意思、指向第一行的首地址、 *d = 51;// a[1][0]赋值成51 d++;//走4个字节 即a[1][1] *d = 91;//将a[1][1]赋值成91
-
-
指针数组和数组指针、
-
数组中的每个元素都是个指针、并定义了每个元素的指针变量
-
指针数组
-
int a[3][4]; int b, c; for (b = 0; b < 3; b++) { for (c = 0; c < 4; c++) { a[b][c] = 16; } } a[0][3] = 91; int *d[4]; d[0] = &a[0][0]; d[1] = &a[0][1]; d[2] = &a[0][2]; d[3] = &a[0][3]; for (c = 0; c < 4; c++) { printf("c =%d\n", *(d[c])); } }
-
数组指针
1. 一维数组指针 2.
int (*d)[4];//一个指针变量、指向含有4个元素的一维数组 int a[4]; int b, c; for (b = 0; b < 4; b++) { a[b] = b; } d = &a; //使用地址符& a和&a 的地址相同 int* e; e = (int*)d;//(int*)强制转换、 for (b = 0; b < 4; b++) { printf("e=%d\n", *e); e++; }
-
二维数组、
-
int(*d)[9]; int a[6][9]; int b, c; for ( b = 0; b <6; b++) { for ( c = 0; c < 9; c++) { a[b][c] = b + c; } } d = a;//二维数组可以直接赋值给数组指针、 int *e; e = (int *)d; for(b = 0; b < 6; b++) { for (c = 0; c < 9; c++) { printf("%d ", *e); e++; } printf("\n--------------------------------\n"); } d++;//跳了40字节 e = (int*)d;
-
-