本篇文章给大家谈谈c语言数组形参,以及c语言数组形参和实参对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、C语言数组名做函数参数,形参为什么不定长度
- 2、在c语言中的变量声明中,实参传递给形参用数组怎么表示
- 3、为什么C语言把数组形参当做指针?
- 4、c语言,用数组名作为函数调用时的实参,传递给形参的是什么?
- 5、C语言:结构体数组怎样做形参
- 6、C语言数组作为形参实参的一些疑惑?
C语言数组名做函数参数,形参为什么不定长度
1、在C语言中,如果把数组作为一个函数的参数的话,在对函数进行传值的时候只是把数组的首地址传过去,也就是指针传过去,所以再用sizeof(array)/sizeof(int)求数组的大小只能得到1。
2、是啊 c中数组定义时要指定大小。 作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。
3、形参可以不定义长度,因为等效于指针。但实参 必须定义长度 即使是指针类型 ,也需要指向特定空间,或者分配动态内存,实际上 还是有长度约束的。最后一句实参与形参的结合方式是地址结合,与数组长度无关 这个是对的。
在c语言中的变量声明中,实参传递给形参用数组怎么表示
1、C中数组名表示数组首元素的地址。例:如果arr是一个数组,则:arr == &arr[0];arr和&arr[0]都表示数组首元素的内存地址。
2、若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。
3、举例:void f(int *p){ } int arr[]={1,2,3};因为函数f的形参是一个类型为int的指针变量,所以调用f时,可以将数组名arr作为实参传给形参p。
4、用数组元素a[i]作实参时,向形参变量传递的是数组元素的值,用数组名a作函数实参时,传递的是数组首元素的地址。你可以看看谭浩强的《C程序设计》7节的内容,网上也搜得了。我也是才开始学C语言。
5、c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是 把实参数组的首地址单向传递给形参。
为什么C语言把数组形参当做指针?
1、C语言里面数组和指针关系密切:数组名就是一个指针,表示第一个元素的地址,所以可以直接把定义后的数组名赋值给同类型的指针变量,用做函数的参数时,数组和指针等效的,即fun(int *p)和fun(int a[])等效。
2、函数传递的是数组的首地址,即a[0]的地址,而不是把整个地址都传过去,因为有首地址,只要往下寻找就能遍历整个数组了。
3、正确答案是 指针。另外说明下,实参不管是数组元素地址,还是普通单个变量的地址,或者是结构体变量的地址,只要是地址,那么形参就要定义为指针,因为指针变量的值就是另外一个变量的地址。
4、参数副本的概念 函数传参会为参数创建副本,比如经常看到的swap(int a,int b)并不能交换两个变量,具体可搜参数副本(手机打字费劲)如果实参取&就解决了这个问题,依然看搜到的结果 2。
c语言,用数组名作为函数调用时的实参,传递给形参的是什么?
1、【答案】:C 本题考察程序语言的基础知识。函数调用时若实参是数组名,则是将数组空间的起始位置传递给对应的形参。
2、c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是 把实参数组的首地址单向传递给形参。
3、在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是首地址。因为数组名传递的是数组的地址也就是第一个元素的地址。
4、数组首元素的地址 C中数组名表示数组首元素的地址。例:如果arr是一个数组,则:arr == &arr[0];arr和&arr[0]都表示数组首元素的内存地址。
C语言:结构体数组怎样做形参
用 结构体指针 和 数组元素个数 为参数。
声明函数和实现函数要一致。kid bii(struct kid c) 这个定义一个返回kid类型的函数,形参是kid 不是指针。
从系统分析而言,建议分开。当然,就测试而言,是可以的。如果一定要***用2维数组做参数,按照对于多维数组做参数的要求,前几维一定要给出确切的数值 如2维: void shuchu(struct std cansu[5][]) 就可以了。
结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。
C语言数组作为形参实参的一些疑惑?
1、但是,数组做形参时,C语言支持中括号里面写入数字,如array[0]、array[1]或array[10]等,但它们都是一样的,作用与写成array[]完全相同。
2、第二点理解应该说也是对的;但贴切一点说,数组和指针传给形参时也是只拷贝了指针变量(数组名也是指针变量,所以一起说),这被拷贝的“指针变量”也是临时的,函数退出时就消失了。
3、解释:实参可以是常量、变量、表达式、指针、数组名、数组元素 至于你这个 fun(a1,(a2,a3),(a4,a5,46); 应该是3个实参。
4、形参的值是在调用函数时,由实参传递过去的。一开始形参的值与实参相等,但在被调用函数内部可以改变形参的值,而这种改变不会影响实参的值,因为形参是实参的一份拷贝,两者分配的内存储存单元是不同的。
c语言数组形参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言数组形参和实参、c语言数组形参的信息别忘了在本站进行查找喔。