打印

指针和数组的不同点

[复制链接]
4824|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
abin0415|  楼主 | 2011-4-11 09:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先要说明的是,我是一个菜鸟,离高手还有唐僧去西天取经的距离。希望能让初学者分清数组与指针是两码事。不要认为指针等于数组。哈哈,言归正传。以下是指针与数组的不同点:
指针用于保存数据的地址,采用间接访问,首先取得指针的内容,把它作为地址,然后从这个地址提取数据,通常用于动态数据结构,定义指针时,编译器只分配存储指针自身的空间。而数组用于保存数据,直接访问数据,通常用于存储苦丁数目且数据类型相同的元素,对象空间由编译器自动分配和删除。

相关帖子

沙发
ayb_ice| | 2011-4-11 10:28 | 只看该作者
只是有些类似,但其实是两个不同的东西
指针是地址,数组是多个变量的组合

使用特权

评论回复
板凳
刘前辈| | 2011-4-11 10:37 | 只看该作者
支持LS。指针指向的是一个地址,而数组是一段Len内存区。相差甚远。

所以LZ题目写的不明确。应该是下面还有点讨论意义:

“指针和数组名的不同”

使用特权

评论回复
地板
dqyubsh| | 2011-4-11 10:39 | 只看该作者
在内存里,数组是一块连续的数据。

指针是另外一个内存数据,它的内容可以是任何内存地址,通过操作指针,就会读写它所指向的地址里的数据。其自由度非常高。

使用特权

评论回复
5
原野之狼| | 2011-4-11 10:44 | 只看该作者
我同意刘前辈的看法,应该以
“指针和数组名的不同”
为主题进行讨论,LZ所言之二者没有可比性。

使用特权

评论回复
6
yan2005| | 2011-4-11 10:52 | 只看该作者
基本会用就是了吧。研究太深也没有实际价值,多花点时间在实际的项目上。呵呵。

使用特权

评论回复
7
zhesiniya| | 2011-4-11 11:02 | 只看该作者
数组名字恰好是这段数组首元素的地址,而指针恰好又存的是地址,有意思.

使用特权

评论回复
8
yeguohua| | 2011-4-11 11:19 | 只看该作者
本帖最后由 yeguohua 于 2011-4-11 11:38 编辑

这个要看个人的理解了,如果要细说的话,要区分几个东东,指针变量和指针其实是不一样的,指针变量是一个能存放内存地址(也就是指针)的一个内存空间,但很多人都习惯把指针变量叫做指针,心里明白就行,而数组是一段连续的内存空间,数组名是整个数组的首地址。所以:指针变量不等于指针,数组名等价于指针,数组名不等于数组。我也在学C语言,希望和楼主共同进步。

使用特权

评论回复
9
yeguohua| | 2011-4-11 12:02 | 只看该作者
本帖最后由 yeguohua 于 2011-4-11 12:04 编辑

再说说我写*符号的格式,对初学者看懂自己的程序有帮助。
void swap_2(int* p,int* q)//这里*是定义q为指针类型,和int是一个作用,所以写的时候*和int靠在一起,和q用空格分开。
{
        int j = 5;
        int i = 2;
        int k;
        k = j * i;//这里的*是乘,所以俩边都用空格分开。
        j = *p;//这里的*是指针运算符,和p结合在一起,代表p所指向的内存,所以和=号分开,和p靠在一起。
        *p = *q;
        *q = j;
}

使用特权

评论回复
10
xlsbz| | 2011-4-11 12:10 | 只看该作者
讨论一个概念前 首先要明确什么是指针 什么是数组

我觉得指针数据啥啥无所谓  会用就行了!!

指针就是指向一根针  数组就是一组数

上面有人提到数组名  我个人觉得数组名没啥意义 只不过是发明C语言的人强制定义的罢了   就是人家发明的 我们只能遵守 没啥好研究的  遵守就行了

使用特权

评论回复
11
xlsbz| | 2011-4-11 12:13 | 只看该作者
这个要看个人的理解了,如果要细说的话,要区分几个东东,指针变量和指针其实是不一样的,指针变量是一个能存放内存地址(也就是指针)的一个内存空间,但很多人都习惯把指针变量叫做指针,心里明白就行,而数组是一 ...
yeguohua 发表于 2011-4-11 11:19



多看几本老外的书  你的说法可能会改了改了  有些书压根就没指针变量这个词  我想是国内的人为了理解方便自己造出来的词    挺好的  我觉得指针变量理解起来更方便

比老外强很多

使用特权

评论回复
12
abin0415|  楼主 | 2011-4-11 13:16 | 只看该作者
多谢刘前辈和原野之狼的指教。以后一定改。:D

使用特权

评论回复
13
sdpz| | 2011-4-11 13:54 | 只看该作者
楼主没把本质的东西说清楚。那些直接用未初始化指针来返回数据的人,是读死书的人,只会抄袭,不知道存放数据必须有“空间”,空间在什么地方,是否安全,这些概念。本文开口就大谈指针和数组,对那些人来说等于白说。

使用特权

评论回复
14
刘前辈| | 2011-4-11 14:10 | 只看该作者
本帖最后由 刘前辈 于 2011-4-11 14:12 编辑

非常重要的概念:
一般:指针是地址;它是变量(指针变量),它既可以指向一个数组的地址(位置),也可以指向一个函数的地址(起始位置)。

而数组名是常量,——常量指针;除了指向它自己,谁也不能指向。

所以,数组名、函数名都是常量指针,都代表自己所处地址位置。这些概念应用好,程序就非常漂亮了。

举例:
在一个main( )主函数中,C程序如何跳转(不是调用)到 f1()函数?

有很多种写法,高手写出来就是不一样。……初一看,看不懂,等想明白了,让人恍然大悟。于是,咱菜鸟又长进了。



使用特权

评论回复
15
mbutterfly| | 2011-4-11 16:09 | 只看该作者
如何跳转啊,是用函数指针吗?

使用特权

评论回复
16
刘前辈| | 2011-4-11 17:18 | 只看该作者
请教高手,如何跳转?

在一个main( )主函数中,C程序如何跳转(不是调用)到 f1()函数?


、、

使用特权

评论回复
17
abin0415|  楼主 | 2011-4-11 19:35 | 只看该作者
理论指导实践,没有理论,何来实践。

使用特权

评论回复
18
sysdriver| | 2011-4-11 19:48 | 只看该作者
我认为:指针和数组,没有什么关系,所以讨论不同点会把自己弄乱。

也许你用数组做参数传递时,会有点迷糊。但你可以理解成,它只是把数组首地址赋给局部指针,没其他。

地址不能赋给数组,数组取内容也没有*
最大的不同应该是,指针爱指向谁就指向谁,数组不能。

使用特权

评论回复
19
jack_shine| | 2011-4-11 22:35 | 只看该作者
工作中慢慢体会

使用特权

评论回复
20
流行音乐| | 2011-4-11 23:31 | 只看该作者
指针和数组最大的区别在于,在某些语言中只有数组没有指针。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

2105

帖子

5

粉丝