分类: C/C++
2016-06-13 19:39:40
原文地址:指针数组与数组指针 作者:zhenhuaqin
数组指针--指向数组的指针,是一个指针,其指向的类型是数组;
指针数组--元素为指针的数组,是一个数组,其中的元素为指针
1.指针数组
数组名本身就是一个指针,指向数组的首地址。注意这是声明定长数组时,其数组名指向的数组首地址是常量。而声明数组并使某个指针指向其值指向某个数组的地址(不一定是首地址),指针取值可以改变。
指针数组是多个指针组成了数组
int *p[4]; //它是四个指针
//这四个指针组成一个数组
int a[4]={1,2,3,4};
p =&a; //进行赋值
for(int i=0;i<4;i++)
cout<<*p[i]<
2. 数组指针:
是指向数组的一个指针,如int (*p)[10] 表示一个指向10个int元素的数组的指针。
数组指针的动态内存申请:
char (*p)[10];
p=(char(*)[10])malloc(sizeof(char[x][x])*N);
#include
Int main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};
p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);
return 0;
}
输出结果:
1, 2, 3, 4
hello world
3. 它们的好处:
1)指针数组的用处
那用指针数组的好处是什么呢?
如果我们要定义若干字符串
但是每个字符串的长度不一定一样
如果我们用数组来存储
那么我们就应该以对大字符串的长度为基准
这样会造成存储空间的浪费
我们将采用指针数组
每个指针的字节数是4
乘以数组下标的最大值
就是所要的空间
当我们定义了一个二维数组的时候
我们用数组指针来指向它
这样会很方便
由前面的指针PK数组
我们知道当要查找数组中元素时
指针数组的索引方式要快捷
2)数组指针的用处
数组指针有一个用处是在多维数组中使用
会增加程序的灵活性