| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1683 人关注过本帖
标题:[原创]指针数组VS数组指针
只看楼主 加入收藏
编程女孩
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-6-12
收藏
 问题点数:0 回复次数:18 
[原创]指针数组VS数组指针
由于本人是菜鸟
刚学没有几天
如果哪里写错了
还望大虾指教
我在这里谢过了



1指针PK数组
指针指向一块地址;数组对应一块地址
指针指向地址无所谓连续;数组对应的地址连续
指针指向地址可以改变;数组对应的地址不可以改变
指针可以指向数组;数组可以存储指针

有时候指针和数组是一致的
什么时候呢?
你比如说在一个数组作为形参的时候
它就转变为同类型的指针
都是传递首地址
进行连续操作

那为什么我们要用指针呢?
因为指针可以增加程序的灵活性
它可以对内存地址直接进行操作
可以扩大寻址范围
可以避免传值
提高代码执行效率



2。指针数组
指针数组是多个指针组成了数组

int *p[4]; //它是四个指针
//这四个指针组成一个数组

int a[4]={1,2,3,4};
p =a; //进行赋值
for(int i=0;i<4;i++)
cout<<*p[i]<<endl;
3。数组指针
int (*p)[4]; //[]的优先级高于*
//p是一个指针变量
//它指向一个有四个数组

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
p =a; //进行赋值
for(int i=0;i<12;i++)
cout<<(*p)[i]<<endl;

4。指针数组的用处
那用指针数组的好处是什么呢?
如果我们要定义若干字符串
但是每个字符串的长度不一定一样
如果我们用数组来存储
那么我们就应该以对大字符串的长度为基准
这样会造成存储空间的浪费
我们将采用指针数组
每个指针的字节数是4
乘以数组下标的最大值
就是所要的空间

当我们定义了一个二维数组的时候
我们用数组指针来指向它
这样会很方便

由前面的指针PK数组
我们知道当要查找数组中元素时
指针数组的索引方式要快捷

5。数组指针的用处
数组指针有一个用处是在多维数组中使用
会增加程序的灵活性

让批评贴来的更猛烈些吧!
搜索更多相关主题的帖子: 指针 地址 灵活性 
2006-06-16 18:59
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 19:28
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 19:32
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 21:12
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 21:14
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 21:19
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 21:23
穆扬
Rank: 1
等 级:禁止发言
帖 子:1910
专家分:0
注 册:2006-6-1
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-16 21:25
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用穆扬在2006-6-16 21:23:03的发言:
for(int i=0;i<12;i++)
cout<<(*p)[i]<<endl;

好象很有问题,建议你仔细检查

这个无任何问题! 穆仰 别的说法没什么问题

编程女孩:把初级教材学完你就知道纠缠里这里多么的不应该!关键是多写

穆扬: 你这一个问题分这多次发贴算灌水?还是算什么


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-06-17 00:15
icuit
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2006-4-28
收藏
得分:0 

2。指针数组
指针数组是多个指针组成了数组

int *p[4]; //它是四个指针
//这四个指针组成一个数组
int a[4]={1,2,3,4};
p =a; //进行赋值
for(int i=0;i<4;i++)
cout<<*p[i]<<endl;


p=a;//错误。
应该是
&*p[0]=a;
因为*p[4]是一个包含四个指针的数组
而a是数据a[4]的数组名,也就是a[4]的首地址;
而p是*p[4]的数组名,也就是*p[4]的首地址;
注意:以上两个值都是常量;是不能改变的!!!!
*p[4]包括4个元素,分别是*p[1],*p[2],*p[3],*p[4],未对他们赋值之前,他们的值是不确定的。
而且在我具体的测试中
发现*p[i]的地址也并不连续,这就意味着要对*p[i]的元素分别进赋值
但是我不明白为什么&p与p的值为什么相同,请指点。


int (*p)[4]; //[]的优先级高于*
//p是一个指针变量
//它指向一个有四个int 类型变量的一维数组

他不是一个数组。
只是指向一个有4个元素的一维数组
而这个指针是p

以上是我的理解,
恳请大家指正

2006-06-17 16:04
快速回复:[原创]指针数组VS数组指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044173 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved