Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51927
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-12 10:57
个人简介

A fool sees not the same tree that a wise man sees。。。

文章分类

全部博文(78)

文章存档

2016年(78)

我的朋友

分类: 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] 表示一个指向10int元素的数组的指针。   

数组指针的动态内存申请:

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)数组指针的用处

数组指针有一个用处是在多维数组中使用

会增加程序的灵活性

 

阅读(288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~