⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_36622.htm

📁 vc
💻 HTM
字号:
<p>
序号:36622 发表者:WildMan 发表日期:2003-04-17 10:10:07
<br>主题:指针与数组
<br>内容:刚学C++,想不明白这个问题:<BR>int a[100];<BR>int * iptr=a;<BR>a[i]等价于*(a+i)等价于iptr[i]等价于*(iptr+i)<BR>这几个相等的东西没想明白,请知道的朋友讲解下。万分感激。
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-04-17 12:59:57
<br>内容:因为一个数组的数组名就是指向数组头元素的指针<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:林建华 回复日期:2003-04-17 13:16:39
<br>内容:a[i]等价于*(a+i)<BR>好像不对吧.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:WildMan 回复日期:2003-04-17 13:32:26
<br>内容:书上是这样写的,我也不知道是对还是错,反正我自已是没想明白这几个等价于
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wowow 回复日期:2003-04-17 17:58:50
<br>内容:指针、数组实际上都只是表示一块内存区的起始地址,a[i](iptr[i])表示该内存区第i个int的数据,iptr+i(&amp;a[i])表示把指针指向该内存区第i个数据地址,*(*p)即表示该指针所指向的地址的内容。通过以上说明,不知道你能否理解。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-04-17 23:55:18
<br>内容:int a[100];<BR>int * iptr=a;<BR>a[i]等价于*(a+i)等价于iptr[i]等价于*(iptr+i)<BR><BR>/*<BR>&nbsp;&nbsp;[等价]的含义是什么 ? 如果说[等价]就是指[值一样]的话,那么<BR>&nbsp;&nbsp;在上面的情况下,的确是一样的值. 不过指针和数组本质上是不同的,<BR>&nbsp;&nbsp;和数组首元素的地址也含义不同。一个是常量,一个是变量。很多微妙的不同。<BR>*/
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:super_xxx_xxx 回复日期:2003-04-18 08:53:42
<br>内容:那请问各位大虾,<BR>int a[100];<BR>那么数组a的地址是不是 (a-1) ?<BR>如果不是那么(a-1)有代表什么?<BR>&nbsp;&nbsp;<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:wowow 回复日期:2003-04-18 10:06:44
<br>内容:数组a的地址就是a;<BR>a-1表示数组a在内存中地址的前一个字节的地址,至于该字节内容,如果a不是在类或结构中,或者a是类或结构的第一个变量,天晓得里面是什么,如果你要强行修改该字节的内容,有可能引起系统崩溃。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:罗兹维尔 回复日期:2003-04-18 11:00:58
<br>内容:int a[100];<BR>首元素:a[0],a指向于a[0]的地址<BR>因为数组a是int型的,那每个元素都是占用sizeof(int)的bytes<BR>*(a+i) == *(a的地址+i*sizeof(int))== a[i]<BR>//只是指指针所指内存地址中的值相等
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:小灿 回复日期:2003-04-20 10:57:27
<br>内容:int a[100];<BR>int *iptr;<BR><BR>a==&amp;a[0]<BR>iptr=a==itpr=&amp;a[0]
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:dr0 回复日期:2003-04-20 14:00:04
<br>内容:Expert C Programming : Deep C Secrets&nbsp;&nbsp;by Peter Van Der Lindon , Sun Microsystem Inc.<BR><BR>这本书讲的最详细。<BR><BR>C Pitfalls and Traps 也很好。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:secretguest 回复日期:2003-04-20 14:51:37
<br>内容:指针就是地址,这是首先要明确的。数组作为一种数据结构要存储,也要一定的存储空间,占用一片内存,在计算机中内存是有地址的,每一单元的内存都有一编号,即使地址,分给数组的那片内存,是一块连续的内存,相邻的数组元素所分配的内存空间也是相邻的,数组的第一个元素就存在这块内存的首地址,理解数组从内存分配的角度理解回容易些。这样就和指针能联系在一起了,另外数组的掌握要多动手编程,多上机验证,程序设计本身很难说是为什么对,为什么错,完全是一种语法规范,能理解也好,不能理解也好,只要将这些语法规范记住了就可以了,详细而深入的理解您可以看一些程序设计语言编译原理的书。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:郭成 回复日期:2003-04-21 13:09:03
<br>内容:a[i]是指a数组中的第i个元素,*(a+1)也是指a数组中的第i个元素 ,<BR>这里的*是间接运算符,这里是说(a+1)这个地址所指向的内容,也既是第i个元素。iptr[i]和*(iptr+i),和前面说的意思一样的<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:张名 回复日期:2003-04-22 11:02:57
<br>内容:上面说的都是一个道理,我想刚开始学习的时候确实容易搞糊涂。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:badboy 回复日期:2003-07-11 02:01:46
<br>内容: 谁能帮帮我?<BR><BR>class hd<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;hd(){int num[3][3]={1,2};a=num;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;int * get(){return a;}&nbsp;&nbsp;&nbsp;&nbsp;<BR>//该get()函数到底应该反回什么类型的指针?<BR>//按说,指针a是指向数组的指针,可是无论是int ** 还是int * ,编译器都抱错。<BR>private:<BR>&nbsp;&nbsp;&nbsp;&nbsp;int (*a)[3];&nbsp;&nbsp;&nbsp;&nbsp; //a被声明一个指向数组的指针<BR>};<BR><BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:张名 回复日期:2003-07-11 09:53:14
<br>内容: int (*a)[3];&nbsp;&nbsp;&nbsp;&nbsp; //a被声明一个指向数组的指针<BR>这样的申明好像比较少见,经过向高人请教得知,这是指向一个含3个变量的数组的指针。<BR>定义为:int* a[3] 呢?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:罗兹维尔 回复日期:2003-07-11 23:10:21
<br>内容:int (*a)[3];&nbsp;&nbsp;&nbsp;&nbsp; <BR>int* a[3] ;<BR><BR>/*对声明进行判断的原则是,首先找出标识符,就是a,<BR>再根据运算符的结合率,int* a[3],a与 [ 结合,那么a就是一个数组,再与*结合,那么int* a[3]就是一个有3个元素的指针数组,数组的每个元素都是一个int型指针*/<BR><BR>/*****&nbsp;&nbsp;int (*a)[3];&nbsp;&nbsp;因为加了括号,a与*结合,那么a是一个指针,再和[]结合,那就是指向于数组的指针。********/&nbsp;&nbsp; <BR><BR>//&nbsp;&nbsp; int * get(){return a;}&nbsp;&nbsp;&nbsp;&nbsp;应该声明为<BR>//&nbsp;&nbsp; int (*get()) [3] {return a;}<BR><BR><BR><BR>//详细看 "C专家编程"<BR><BR>2003-7-11 23:55:03

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -