本篇文章给大家谈谈c语言数组形参,以及c语言数组形参流程图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、C语言中用数组做为形参为什么形参改变时实参也要变??
- 2、C语言中,用数组名作形参和用指针作形参有区别吗?
- 3、c语言,用数组名作为函数调用时的实参,传递给形参的是什么?
- 4、为什么C语言把数组形参当做指针?
- 5、C语言数组名做函数参数,形参为什么不定长度
C语言中用数组做为形参为什么形参改变时实参也要变??
因为你传的是地址,***设有两个盒子分别存放两个实参1和2,设形参为A,B.如果只是传值调用,则相当于只是给A和B赋值1和2,对AB改变不影响盒子中的数。
而传入数组名,实质是传入一个指针给形参变量,这个变量指向和实参一样的内存地址。所以,当你在函数里改变形参变量所指向的内容的值的时候,就也改变了实参变量的值。这就是传值,和传址两种参数传递方式的不同。
将数组名字作为参数传递给函数,相当于传递该数组的首地址,即该数组第0个元素的指针。所以,在函数内部是可以改变数组的内容。
C语言中,用数组名作形参和用指针作形参有区别吗?
1、在用作函数形参时,基本没有区别,因为在内部编译器就直接把数组参数当成指针来处理的,怎么用都可以,当成数组用还是当成指针用都行,你要是开心还可以混着来。
2、C语言,数组名只是一个指针常量而已,离开定义可见处,数组大小的信息就不存在了。只有定义完全可见的地方,才可以获得数组的大小。数组作为函数的参数,和外部引用声明都不能获得数组的大小。
3、数组名本质上就是个指针,也就是地址,但是它是一个常指针,是个固定值,而指针是是指针变量的简称,是个变量,这个变量存放的是地址值,它的值是可以改变的。
4、数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
c语言,用数组名作为函数调用时的实参,传递给形参的是什么?
若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首地址。数组首地址数组第一个元素的地址。数组名字本身就是一个指针,它是一个指针常量,指向的地址不变。
c语言规定,数组名做实参时,它和对应形参之间的数据传递方式是 把实参数组的首地址单向传递给形参。
【答案】:C 本题考察程序语言的基础知识。函数调用时若实参是数组名,则是将数组空间的起始位置传递给对应的形参。
fun(int a){ a = 10;} void main(){ int b = 10;fun(b);]a就是形参,在函数的定义中,放在括号里声明的变量 b是实参,就是调用函数时,传入的参数。数组在进行形参实参结合的时候,就是传递数组的首地址。
数组名表示的是数组的首地址。所以传给形参的是首地址。
为什么C语言把数组形参当做指针?
1、C语言里面数组和指针关系密切:数组名就是一个指针,表示第一个元素的地址,所以可以直接把定义后的数组名赋值给同类型的指针变量,用做函数的参数时,数组和指针等效的,即fun(int *p)和fun(int a[])等效。
2、函数传递的是数组的首地址,即a[0]的地址,而不是把整个地址都传过去,因为有首地址,只要往下寻找就能遍历整个数组了。
3、正确答案是 指针。另外说明下,实参不管是数组元素地址,还是普通单个变量的地址,或者是结构体变量的地址,只要是地址,那么形参就要定义为指针,因为指针变量的值就是另外一个变量的地址。
4、只能说是C语言为了方便 做的一种规定 C语言中, 数组名,其值为数组首地址 而地址, 正是指针的含义 所以 一维数组 可以当做指针传值。这样才更方便 毕竟不管是数组,还是指针,都可以认为是一段连续的内存。
5、参数副本的概念 函数传参会为参数创建副本,比如经常看到的swap(int a,int b)并不能交换两个变量,具体可搜参数副本(手机打字费劲)如果实参取&就解决了这个问题,依然看搜到的结果 2。
6、举例:void f(int *p){ } int arr[]={1,2,3};因为函数f的形参是一个类型为int的指针变量,所以调用f时,可以将数组名arr作为实参传给形参p。
C语言数组名做函数参数,形参为什么不定长度
在C语言中,如果把数组作为一个函数的参数的话,在对函数进行传值的时候只是把数组的首地址传过去,也就是指针传过去,所以再用sizeof(array)/sizeof(int)求数组的大小只能得到1。
是啊 c中数组定义时要指定大小。 作为形参的时候,可以不指定,因为在函数调用的时候,数组会转为指针的。
形参可以不定义长度,因为等效于指针。但实参 必须定义长度 即使是指针类型 ,也需要指向特定空间,或者分配动态内存,实际上 还是有长度约束的。最后一句实参与形参的结合方式是地址结合,与数组长度无关 这个是对的。
传递数组作为参数时只传递了数组在内存中的首地址,但对于数组有多大,必须由数组长度来确定。否则的话函数中对于数组的操作可能会越界,即对原本不属于数组的内存进行了修改,这样可能会导致程序出错。
a[]={1,2,3},编译器会根据初始化数据自动计算出数组长度。其次,如果用一维数组做函数的形参,也可以不指定大小。二维数组在定义时需要指定大小,就算在定义时初始化也必须指定第二个方括号中数,做函数参数时也是一样。
实参数组和形参数组必须类型相同,形参数组可以不指明长度。
c语言数组形参的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言数组形参流程图、c语言数组形参的信息别忘了在本站进行查找喔。