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

📄 subject_34042.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:34042 发表者:常山赵子龙 发表日期:2003-03-26 10:37:10
<br>主题:关于C语言指针的一个很菜的问题!
<br>内容:在用数组名做函数参数一节中讲到:用数组名作参数时,如果形参数组中各元素的值发生变化,实参数组也变化!因实参数组名代表数组首地址,而形参是用来接收从实参传递过来的数组首地址的。因此,形参应该是一个指针变量(只有指针变量才能存放地址)。<BR>如有函数:f(int arr[],int n),在调用函数时,系统会建立一个指针变量 arr,用来存放从主调函数传递过来的实参数组首地址。如果在f函数中用sizeof指针运算符测定arr所占字节数,(即sizeo(arr)的值),结果为2。这就证明了系统是把arr作为指针变量处理的!<BR>其实就最后一句不懂,为什么啊?<BR>呵呵,其实就是不懂那个函数的意思,(没学过)打少了怕大家不清楚我的意思,各位看在我打了这么多的份上帮我解释清楚,不要笑我好吗?&nbsp;&nbsp;谢了! 呵呵!
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:zjllyy 回复日期:2003-03-26 14:00:58
<br>内容:也就是说,arr是指针,它存的是形参的值,当然这个形参也是一个指针,当arr的值改变时形参是不会改变的,但当arr指向的内存改变时,形参指向的内容也就改变了。和传的int型的值没有矛盾,只是转了一个弯
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-26 14:30:48
<br>内容:使用数组作函数参数<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;数组作函数参数可以分为如下三种情况:(这三种情况的结果相同,只是所采用的调用机制不同)<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;1. 形参和实参都用数组<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;调用函数的实参用数组名,被调用函数的形参用数组,这种调用的机制是形参和实参共用内存中的同一个数组。因此,在被调用函数中改变了数组中某个无素的值,对调用函数该数组的该元素值也被改变,因为它们是共用同一个数组。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2. 形参和实参都用对应数组的指针<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;在C++中,数组名被规定为是一个指针,该指针便是指向该数组的首元素的指针,国为它的值是该数组首元素的地址值,因此,数组名是一个常量指针。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;实际中,形参和实参一个用指针,另一个用数组也是可以的。在使用指针时可以用数组名,也可以用另外定义的指向数组的指针。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;3. 实参用数组名形参用引用<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;如何对数组类型使用引用方式,这里先做如下说明:先用类型定义语句定义一个int型的数组类型,如下所示:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;typedef int array[8];<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;然后,使用array来定义数组和引用。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;示例:<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;#include &lt;iostream.h&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;typedef int array[8];<BR>&nbsp;&nbsp;&nbsp;&nbsp;int a[8] = {1, 3, 5, 7, 9, 11, 13};<BR>&nbsp;&nbsp;&nbsp;&nbsp;void fun(array &amp;b, int n)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int i=0; i&lt;n-1; i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b[7]+=b[i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;void main()<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int m=8;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fun(a, m);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;a[7]&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;该程序中,在fun()函数中,使用了引用作形参,调用时所对应的实参应该是一个数组名,这里的引用是给数组起个别名。在fun()函数中对数组b的操作,就相当于b所引用数组a的操作。在C++中,常用这种调用方式。<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>
<font color=red>答案被接受</font><br>回复者:bird 回复日期:2003-03-26 14:57:24
<br>内容:int&nbsp;&nbsp;array[] = { 1, 2, 3, 4, 5 };&nbsp;&nbsp;&nbsp;&nbsp; // sizeof( array ) is 20 
<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-03-26 14:57:37
<br>内容:不好意思,那个函数是sizeof!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-26 14:59:48
<br>内容:int&nbsp;&nbsp;array[] = { 1, 2, 3, 4, 5 };&nbsp;&nbsp;&nbsp;&nbsp; // sizeof( array ) is 20 <BR><BR><BR>int :Storage size is 4 bytes. <BR><BR>sizeof( array ) =4*5;
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-26 15:06:03
<br>内容:char szHello[] = "Hello, world!";<BR>sizeof (szHello) &lt;&lt; "\n";<BR><BR><BR><BR>The length of Hello, world! is: 14<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>
回复者:bird 回复日期:2003-03-26 15:14:27
<br>内容:array &amp;b&nbsp;&nbsp; 把array的地址传给b!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:bird 回复日期:2003-03-26 15:16:33
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;b[7]+=b[i];&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这个是什么意思?<BR> cout&lt;&lt;a[7]&lt;&lt;endl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//还有这个?<BR><BR><BR>这只是我copy的一段代码!没啥意思!:-)!<BR><BR>&lt;&lt; 是c++的流输出操作符!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

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