Ⅰ c语言,数组名作函数参数问题。
void
change(int
array[],int
n)相当于void
change(int
*array,int
n),第一个参数是个指针,如果是change(a[2],2)则第一个参数是个常数不是指针,由于数组名是常指针,所以改成change(a,2)就没问题了。
Ⅱ c语言怎么将数组作为函数参数传入
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#include<stdio.h>
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
Ⅲ C语言中数组作为函数参数
C中数组名代表该数组的首地址,
char
s[]="abc";
s代表的就是‘a’在内存中的地址
以地址作参数
,实参和形参同时改变
Ⅳ C语言数组做形参定义语法
a如果是函数是可以的,x[]表示数组x的地址,int x[]等价于int *x
Ⅳ C语言中,数组名作为函数参数,属于什么传递,为什么
C语言中,数组名作为函数参数,属于数组参数传递。在VB6.0中,允许使用数组作为实参传递到子过程的形参中,数组传递必须采用地址传递的方式来传递参数。
数组型变量名本身只是该数组所占存储空间的首地址,函数调用时,系统不会为形参分配数组存储空间,而是仅仅分配一个存放数组地址(第一个元素地址)的存储空间,此后,将实参数组的首地址传递给形参变量。
(5)c语言数组名可以做形参吗扩展阅读:
数组参数在传递时应注意以下两个方面:
1、 在实参和形参列表中只写数组名,忽略维数的定义,但圆括号不能省,当数组作为参数传递时,系统将实参数组的起始地址传给过程,使形参数组也具有与实参数组相同的起始地址,若参数是多维数组,每维以逗号分隔。
2、被调过程可分别通过Lbound和Ubound函数确定实参数组的下界和上界。
Ⅵ 在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是____________。
在C语言中,用数组名作为函数调用时的实参,实际上传递给形参的是首地址。
因为数组名传递的是数组的地址也就是第一个元素的地址。例如:
a[3]这个数组,3指个数,a[0]指第一个元素,全部元素指a[0]~a[2];那数组名a规定的就是首地址。
(6)c语言数组名可以做形参吗扩展阅读
C语言中函数参数传递的三种方式:
1、传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。
2、传地址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。
3、传引用,实际是通过指针来实现的,能达到使用的效果如传址,可是使用方式如传值。说几点建议:如果传值的话,会生成新的对象,花费时间和空间,而在退出函数的时候,又会销毁该对象,花费时间和空间。
Ⅶ C语言中,用数组名作形参和用指针作形参有区别吗
还是有差别的 虽然大多数时候都可以相互用
最大的差别就是指针可以改变,可以通过指针改变指向内容的值,但数组名不行
举个例子:(分别作为形参)
int num[10], *p;
p = num;//此时p指向数组的第一个元素
我在主函数里调用两个函数
1 Sum(num);
2 Sum(p+2,10);
这就有区别了,因为num数组首地址它不能变化,但是此时p指向了数组的第三个元素,而且后面的那个10也是可以改变的,所以说用指针作为形参的时候要带一个int n 表示你要处理的数的个数,所以说用指针作为形参的话会给你一种假象,它的确是指向的数组的某个元素(这要看你的指针移动了,比如说p+2等等,数组名不能移动),但是它仅仅只是一个指针,你可以在调用的函数里用sizeof(num),sizeof(p)求它们的值,就知道为什么总是要加上一个int n了,因为如果不加的话函数就不知道你要操作的数的个数,另外别忘了传递数组和传递一般的int,double等类型是不一样的,传递数组传递的是原数组,函数的操作就改变了原来的数组,而传递一般的数只是传递它的拷贝,对原来的数没有影响;
还有什么不懂的继续交流~~~
Ⅷ C语言数组做形参的问题
char
(*p)[n]表示p是指向含有n个元素数组的指针变量;
char
**p表示p是指针变量,指向的类型是指针。
用数组名+“&”做实参倒是没用过
#include
void
Change(char
*a)
{
char
*b="bca";
a=b;
}
void
main()
{char
*b="bca";
char
a[]="abc";
puts(a);
Change(a);
puts(a);
}
Ⅸ C语言中用数组做为形参为什么形参改变时实参也要变
因为数组传递的是数组的首地址,所以也是地址传递,所以形参改变时实参也要变。