C语言中数组名作为实参传给被调用的函数时,形参获得的是什么

作者&投稿:郑阳 (若有异议请与网页底部的电邮联系)
数组名作为实参时,在调用函数时是把数组的首地址传送给形参,因此实参数组与形参数组共占一段内存单元~

C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。还是用例子说话吧。#includeint*arry(int*a){int*b;b=a;inti;for(i=0;i<5;i++){printf("%d",a[i]);}returnb;}intmain(){inta[5]={1,2,3,4,5};int*c;inti;c=arry(a);for(i=0;i<5;i++){printf("%d",c[i]);}}主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。arry返回的时候也是返回一个指针(地址)。

在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是首地址。
因为数组名传递的是数组的地址也就是第一个元素的地址。例如:
a[3]这个数组,3指个数,a[0]指第一个元素,全部元素指a[0]~a[2];那数组名a规定的就是首地址。

扩展资料
C语言中函数参数传递的三种方式:
1、传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
2、传地址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。
3、传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。

C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址。
还是用例子说话吧。
#include<stdio.h>
int *arry(int *a)
{
int *b;
b = a;
int i;
for(i=0;i<5;i++)
{
printf("%d",a[i]);
} return b;
}
int main()
{
int a[5] = {1,2,3,4,5};
int *c;
int i;
c = arry(a);
for(i=0;i<5;i++)
{
printf("%d",c[i]);
}
}
主要是通过指针把数组,例如main里面的a的地址传入arry函数,然后在arry函数中用一个兼容类型的指针接收地址,然后就可以再这个指针下的地址操作地址上面的数据了。
arry返回的时候也是返回一个指针(地址)。

在函数中,之所以数组的值能够被修改,就是因为形参得到的是数组的地址,而不是数据,所以,行参获得的应该是数组的地址

把数组作为参数传递给函数的时候,并非把整个数组的内容传递进去,此时数组退化为一个同类型的指针,这个指针的值就是数组首元素的地址值。

首地址。以数组名作为函数实参。通过指针可以获得数组的元素地址。

第一个元素的首地址


C语言中数组名和指针的区别
例如:int *p;int a,b;p=&a; \/\/把变量a的地址赋值给指针p,那么指针p就指向了变量a的内存单元p=&b; \/\/把变量b的地址赋值给指针p,那么指针p就指向了变量b的内存单元int a[10]; \/\/整型数组,数组名a本质上是一个地址,是首元素地址,它是一个固定值,不能对它进行赋值操作。

下面的C语言程序中,调用函数怎么写就可以将一个字符串数组作为实参
字符串数组不能作为实参,子函数想要使用调用函数中的字符串可以将字符串所在内存的地址传递过去就可以了(数组名,或者指针)

C语言中,使用数组时,什么时候前面加&,什么时候加*,什么时候什么都不用...
当将数组的一个元素作为参数传递给形参时,实参需要加&,表示取其地址,而形参加*,意思是定义一个指向数组元素的指针,用来指向形参的地址。当将数组名作为参数传递给形参时,实参只需要用数组名就可以,因为数组名就代表该数组的首地址,形参可以定义成*,也可以定义成[]的形式,定义成[]表示变量是...

C语言数组题哪个对那个错?
B是错的。如果赋给的数据个数比定义的数组元素多,就会造成越界错误,篡改掉相邻的数据块内容。C是对的。数组的名称符号,其含义相当于一个指针,指向数组在内存中的首址。D是对的。传递数组给函数后,也就相当于把这个指针给函数了,一旦函数内按照数组名进行操作,就会直接修改数组在内存中的实际内容...

求一些c编程题
A) return语句中的表达式类型 B) 调用函数的主调函数类型 C) 调用函数时临时 D) 定义函数时所指定的函数类型、D、1 9、C语言中数组名作为参数传递给函数,作为实在参数的数组名被处理为___。 A、 该数组的长度。 B、该数组的元素个数。 C、 该数组中各元素的值。 D、 该数组的首地址。、D、1 10、C...

c语言 为什么主函数调用函数average的实参是数组名score,而不是整个...
1、对于一维数组来说,数组作为函数参数传递,实际上传递了一个指向数组的指针,在c编译器中,当数组名作为函数参数时,在函数体内数组名自动退化为指针。此时调用函数时,相当于传址,而不是传值,会改变数组元素的值。例如:void fun(int a[]); 若在fun函数中有a[i]++;等语句,那么对应的数...

在C语言中,数组作为参数,是怎样在函数之间传递的啊??
数组作为参数是按地址传递的 数组名就是数组的首地址。因此在数组名作函数参数时所进行的传送只是地址的传送, 也就是说把实参数组的首地址赋予形参数组名。形参数组名取得该首地址之后,也就等于有了实在的数组。实际上是形参数组和实参数组为同一数组,共同拥有一段内存空间。

C语言中,一般的变量做参数与数组名做参数有什么区别?各位大虾请给解释下...
一般参数,调用时传递的是实参的值,形参是实参的一份拷贝。系统分配两次内存。数组和指针参数,调用时传递的是实参的地址,访问和修改的是原数据,不做拷贝。系统只分配一次内存。

关于c语言 把数组名赋予指针的问题。
你的理解从本质上就有问题 int *p1=a不能通过编译,因为a是二维数组指针,类型是int (*)[3],无法转换到int*型。必须用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]无法通过编译,因为a[0]是一个int指针而不是一个int元素,必须用int *p2=a[0]才可以。a代表二维数组...

C语言 红笔划的地方不理解 *p=a 其中a为数组名称直接可以当作数组的地址...
先明确一个概念。数组的名字本身其实也是一个指针,指向数组的第一个元素。这里定义了一维数组a,那么*p=a就是将a数组的第一个元素的地址赋值给p使p成为一个指向该数组的第一个元素的指针。很久没碰c语言了,建议你再自己试一试 有时这种问题可以尝试自己写一段代码来验证,这样理解会更加深刻 ...

石林彝族自治县19355729603: C语言中数组名作为实参传给被调用的函数时,形参获得的是什么 -
弥蒋唯健: C语言中数组名作为实参传给被调用的函数时,形参获得的是数组的起始地址. 还是用例子说话吧. #include<stdio.h> int *arry(int *a) {int *b;b = a;int i; for(i=0;i<5;i++){printf("%d",a[i]);} return b; } int main() {int a[5] = {1,2,3,4,5};int *c;...

石林彝族自治县19355729603: 1、数组名作为函数调用的实参,传递给形参的是( ). -
弥蒋唯健: 数组名表示的是数组的首地址.所以传给形参的是首地址.

石林彝族自治县19355729603: 调用函数时,实参是一个数组名,则传递给函数的是什么?
弥蒋唯健: 数组名在C语言里,相当于指向数组的地址的指针

石林彝族自治县19355729603: 一些C预言自测题2,第11题 用数组名作为函数调用时的实参,则实际传递给形参的是( ).A、数组的第一个元素值 B、数组中全部元素值 C、数组的首地址 ... -
弥蒋唯健:[答案] 第11题 用数组名作为函数调用时的实参,则实际传递给形参的是( ). A、数组的第一个元素值 B、数组中全部元素值 C、数组的首地址 D、数组的元素个数 【我的回答】 C fun(int[] arr); 传递的是arr[0]的地址,选C ------------------------------------------- ...

石林彝族自治县19355729603: C语言:数组名作为实参传递问题,问题如下: -
弥蒋唯健: 1 2 3 4 5 6 7 8 9 10 11 12//编程一定要格式良好 让别人能看懂 intjudge(int*p) {inti;for(i=0;i<10;i++){if(p[0]!=p[i])return1;elsereturn0;} } 在你 i = 0时已经返回了,因为p[0] == p[i] (此时i是0) 所以返回就是0 无论执行多少次返回都是0 自然只执行1次了 要改成你想要的 你可以把i 设成静态的 也就是 static int i = 0; for循环里 for(;i<10;i++) // 前面不要初始化

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网