大家好,今天小编关注到一个比较有意思的话题,就是关于c 语言 数组形参的问题,于是小编就整理了5个相关介绍c 语言 数组形参的解答,让我们一起看看吧。
- c语言中形参数组和实参数组是什么意思?
- c语言函数的形参为指针变量时,对应的实参可以是数组名。怎么理解呀?
- c语言:一个空数组作为型参,如何在函数中对其赋值?
- 为什么二维数组做形参时的第二维?
- 在C语言中,数组作为参数,是怎样在函数之间传递?
c语言中形参数组和实参数组是什么意思?
简单来说,形式参数(形参)就是形式上的参数,没有确定值,而实际参数(实参)是实际存在的,已经确定的参数,常量,变量,表达式,都是实参。
最简单的例子:
int change(int b,int c){…}/*b和c就是形参,这里的b和c可以是任意一个值传递,为形参*/
int main() { change(1,2); …/*这样就是把实参值传递给形参,1和2就是实参*/ }
c语言函数的形参为指针变量时,对应的实参可以是数组名。怎么理解呀?
举例:voidf(int*p){}intarr[]={1,2,3};因为函数f的形参是一个类型为int的指针变量,所以调用f时,可以将数组名arr作为实参传给形参p。即可以这样调用:f(arr);
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 语言 数组形参的5点解答对大家有用。