一、指针数组
1.什么是指针数组
指针数组是指一个数组,数组里面存放的元素是指针
2.指针数组的声明形式
指针数组的声明形式int *p[3]
3.指针数组的实质
指针数组的实质是声明了一个包含n个相同类型指针的数组,首先他是一个数组,其次数组存放的内容是指针
二、什么是数组指针
1.什么是数组指针
数组指针是一个指针,这个指针是一个指向数组的指针
2.数组指针的声明形式
指针数组的声明形式int (*p)[3]
3.数组指针的实质
数组指针是一个指向数组的指针,这个指针表示的是一个数组的起始地址,指向的数据类型是一个有长度指定的数组,即指针+n时,往前移动的长度是数组长度*n
4.什么时候使用数组指针
数组指针一般在二维数组中使用
三、指针数组和数组指针的区别与联系
1.指针数组是一个数组,数组指针是一个指针,这是最本质的区别 2.指针数组关心的是数组中指针的内容,数组指针关心的是指针指向的数组中的内容 3.指针数组和数组指针除了名字相似,两者所要表达的含义完全不同
四、代码示例
#include<stdio.h>
#include<string.h>
int main()
{
int i;
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]);
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));
}
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]);
}
|