大家好,今天小编关注到一个比较有意思的话题,就是关于c语言数组作为形参的问题,于是小编就整理了3个相关介绍c语言数组作为形参的解答,让我们一起看看吧。
为什么二维数组做形参时的第二维?
不清楚你学指针没,如果学了这个问题就好说了.二维数组是一个二级指针,而一维数组就是一个普通的指针.二维数组其实也是一维的,只是它的一个元素还是一个数组.而一维数组要得到一个元素可以这样:*(p+i) 这样是完全等价于p[i]的.而二维数组想要得到它其中的一个元素就要这样: int i[10][3]; i[1][2] == *(i + 10*1 + 2); 但如果说这个数组是int i[10][30];就不能通用上面的公式,所以如果得到一个二维数组的元素就要由类型来定.如上代码,i是一个int *[3]类型的.
当用数组名作形参时,形参数组改变可使实参数组随之改变 . 这句话哪里错了,求详细解答?
一、数组名
定义一个数组,其数组名是一个静态的地址,可表示这个数组的首地址。静态的意思就是不能改变。
二、参数传递
函数参数传递是传值的,意思是,将实参的数值传递到子函数。当用数组名作形参时,子函数收到的是主函数中的数组的首地址值!
三、形参数组与实参数组??
有这样叫的吗?感觉怪怪的
四、综上:
通过形参 可在子函数中改变形参所指向的数组中的内容,而实参对应的数组中的内容会随之改变。因为,这是通过地址对地址中的内容进行更改。
函数里面的形参数组会影响实参数组嘛?
会影响。
用数组名作函数参数时,要求形参数组和相对应的实参数组都必须是同类型的数组,都必须有明确的数组说明。但形式参数可以不指明长度。
在C语言中,速度名代表了该树种在内存中的起始地址。在用数组名作为函数参数时,实参与形参之间不是进行值得传递,即不是把实参数组的每一个元素的值都赋给形参数组的各个元素。
数组名作函数参数时所进行的传递是地址的传递,也就是说,把实参数组的首地址赋给形参数组名,形参数组名或得该首地址之后,实际上形参数组和实参数组中为同一数组,共同拥有同一段内存空间,既在调用过程当中,当形参一元素发生改变,将直接影响到与其对应的实参数组中的元素。这一点是与变量或者数组元素,作为函数参数的不同之处。
到此,以上就是小编对于c语言数组作为形参的问题就介绍到这了,希望介绍关于c语言数组作为形参的3点解答对大家有用。