本节内容 指针数组与数组指针 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866
char* arr[10]; //10 指针 (char*) Point* arr[10]; //10 指针 (Point*) 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 1、指针数组的定义 char arr[10]; //10 char char* arr[10]; //10 指针 (char*) Point* arr[10]; //10 指针 (Point*) int*********** arr[10]; //10 指针(int***********)
<1> char* arr[2] = {a,b}; <2> char* arr[2]; arr[0] = a; 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 2、指针数组的赋值 char* a = "Hello"; char* b = "编程达人"; <1> char* arr[2] = {a,b}; <2> char* arr[2]; arr[0] = a; arr[1] = b; <3> char* arr[2] = { "Hello", "编程达人" };
Point* arrPoint[10]; //4*10字节 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 3、结构体指针数组 struct Point { int x; int y; }; Point p; //8字节 Point arr[10]; //8*10字节 Point* arrPoint[10]; //4*10字节
4、分析下面的代码: int arr[] = {1,2,3,4,5,6,7,8,9,0}; int* p = &arr[0]; 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 4、分析下面的代码: int arr[] = {1,2,3,4,5,6,7,8,9,0}; int* p = &arr[0]; int* p = arr; int* p = &arr; //什么情况?
int(*px)[2][2]; //二维数组指针 char(*px)[3][3][3]; //三维数组指针 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 5、数组指针的定义 int(*px) [5]; //一维数组指针 char(*px) [3]; int(*px)[2][2]; //二维数组指针 char(*px)[3][3][3]; //三维数组指针 思考题: int *p[5] 与 int (*p)[5] 有什么区别?
int(*px3) [2][2]; //二维数组指针 char(*px4) [3][3][3]; //三纬数组指针 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 6、数组指针的宽度与赋值 int(*px1) [5]; //一维数组指针 char(*px2) [3]; int(*px3) [2][2]; //二维数组指针 char(*px4) [3][3][3]; //三纬数组指针 printf("%d %d %d %d \n",sizeof(px1),sizeof(px2),sizeof(px3),sizeof(px4)); px1 = (int (*)[5])1; px2 = (char (*)[3])2; px3 = (int (*)[2][2])3; px4 = (char (*)[3][3][3])4;
int(*px3) [2][2]; //二维数组指针 char(*px4) [3][3][3]; //三纬数组指针 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 7、数组指针的运算 int(*px1) [5]; //一维数组指针 char(*px2) [3]; int(*px3) [2][2]; //二维数组指针 char(*px4) [3][3][3]; //三纬数组指针 px1 = (int (*)[5])1; px2 = (char (*)[3])1; px3 = (int (*)[2][2])1; px4 = (char (*)[3][3][3])1; px1++;px2++;px3++;px4++; printf("%d %d %d %d \n",px1,px2,px3,px4);
printf("%d %d \n",(*px)[0],px[0][0]); 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 8、数组指针的使用 int arr[] = {1,2,3,4,5,6,7,8,9,0}; int(*px)[10] = &arr; //*px 是什么类型? printf("%d %d \n",(*px)[0],px[0][0]);
printf("%d %d \n",(*px)[0],px[0][0]); 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 9、数组指针的使用 int arr[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} }; int(*px)[3] = &arr[0]; px++; printf("%d %d \n",(*px)[0],px[0][0]);
int(*px)[2][2] = (int (*)[2][2])arr; 思考题: 1、*px是什么类型? 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 10、二维数组指针可以访问一维数组吗? int arr[] = {1,2,3,4,5,6,7,8,9,0}; int(*px)[2][2] = (int (*)[2][2])arr; 思考题: 1、*px是什么类型? 2、(*px)[1][1]的值是什么?px[0][1][1]的值是什么?
<汇编、C/C++线上班>学员可见 昆山爱达人信息技术有限公司 www.bcdaren.com QQ:1250121864 课后练习: <汇编、C/C++线上班>学员可见