赞
踩
指针数组是指一个数组,数组里面存放的元素是指针
指针数组的声明形式int *p[3]
指针数组的实质是声明了一个包含n个相同类型指针的数组,首先他是一个数组,其次数组存放的内容是指针
数组指针是一个指针,这个指针是一个指向数组的指针
指针数组的声明形式int (*p)[3]
数组指针是一个指向数组的指针,这个指针表示的是一个数组的起始地址,指向的数据类型是一个有长度指定的数组,即指针+n时,往前移动的长度是数组长度*n
数组指针一般在二维数组中使用
1.指针数组是一个数组,数组指针是一个指针,这是最本质的区别
2.指针数组关心的是数组中指针的内容,数组指针关心的是指针指向的数组中的内容
3.指针数组和数组指针除了名字相似,两者所要表达的含义完全不同
#include<stdio.h> #include<string.h> int main() { int i; /*指针数组 *1:指针数组是指针的数组 *2:指针数组的声明形式int *p[3] *3:指针数组的实质是声明了一个包含n个相同类型指针的数组 * */ /*输出结果 test1 p[0] = 1 p[1] = 2 p[2] = 3 */ /*test1*/ int a,b,c; a = 1; b = 2; c = 3; int *p[3]; p[0] = &a; p[1] = &b; p[2] = &c; printf("test1\n"); for(i = 0; i < 3; i++) printf("p[%d] = %d\n", i, *p[i]); /*数组指针 *1: 数组指针是一个指向数组的指针,这个指针表示的是一个数组的起始地址, 指向的数据类型是一个有长度指定的数组,即指针+n时,往前移动 整个数 组长度*n *2: 数组指针的声明形式char (*p)[3] *3: 数组指针通常用于指向二维数组使用,以便于二维数组的访问 *4: test2将一个数组指针指向一个int型的二维数组 *5: test3将一个数组指针指向一个char型的二维数组 */ /*输出结果 test2 p1[0][0] = 0 p1[0][1] = 1 p1[0][2] = 2 p1[0][3] = 3 p1[0][4] = 4 p1[0][5] = 5 p1[1][0] = 100 p1[1][1] = 101 p1[1][2] = 102 p1[1][3] = 103 p1[1][4] = 104 p1[1][5] = 105 test3 parr[0] = I parr[1] = love parr[2] = CSDN */ /*test2*/ int arr1[2][6]; int (*p1)[6]; for(i = 0; i < 6; i ++) arr1[0][i] = i; for(i = 0; i < 6; i ++) arr1[1][i] = i+100; p1 = arr1; printf("test2\n"); int j; for(i = 0; i < 2; i++) { for(j =0; j < 6; j++) printf("p1[%d][%d] = %d\n", i, j, *(p1[i]+j)); } /*test3*/ char arr[3][20]; char (*parr)[20]; strcpy(arr[0], "I"); strcpy(arr[1], "love"); strcpy(arr[2], "CSDN"); parr = arr; printf("test3\n"); for(i = 0; i < 3; i++) printf("parr[%d] = %s\n", i, parr[i]); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。