当前位置:首页 » 编程语言 » c语言数组参数

c语言数组参数

发布时间: 2022-05-01 18:15:10

1. c语言数组变量作为函数参数

将数组传递给函数后,数组就会退化为指针

voidfun(intx,intpp[],int*n)
voidfun(intx,int*pp,int*n)
//这两种写法是等价的
pp[j++]=j;//这句写错了
//要保存到pp里的是能整除的整数,而不是计数器j,如果这么写,那么pp的值肯定是{0,1,2,3,4,5,...}
//应该改成
pp[j++]=l;//L才是被整除的整数,要保存的是这个
*n=j;//n作为一个指针,负责传出得到的数字的数量,j是计数器,当所有的计算完毕后,j的值自然是这些数字的数量

2. C语言中,数组做函数参数如何才能按值传递

传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。

void func(int array[10])
void func(int array[])
void func(int *array)

所以以上三种函数声明完全等同。

实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。

下一个问题是:为什么偏要按值传递呢?当要在一个函数内使用一个数组时,传一个指针进去不就行了?只要能访问到我们所要的数据并对其进行操作,何苦钻牛角尖。

3. 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

4. c语言,数组名作函数参数问题。

这道题刚刚做到了,正确答案是c
牛客网大佬给出的解答,A,必须在主调函数中说明此数组的大小,不一定例如传递一个char类型的字符串,就不需要。所以A是错的

5. C语言 数组做参数

strcmp的参数里p[j]和p[j+1]是指针数组的元素,里面存放的是字符串的首地址。在c语言中,字符串都是用首地址来表示的,所以可以吧指针数组中的地址值说成是代表字符串。

6. c语言 数组作为参数传递

调用时把【】去掉,表示掉用这个数组的所有元素,数组的名称表示数组第一个元素的地址。
数组的定义可以写成:
int
table[]={1,2,3,}
或者table[3],不能写成table[],因为系统在定义数组时就给数组分配了地址,table[]没有确定元素的个数,不能分配地址空间。
但是作为形参,可以这样写,void
tab(int
table[])
,不知道为什么,呵呵

7. 关于c语言中数组作为函数参数的函数之间调用问题

1、新建一个数组作为参数项目,如图所示:

8. C语言声明数组参数的问题

看下面代码:

int main()
{
int a[5]={3,6,4,2,5};
char *ptrChar="hello world";//ptrChar是char类型的指针,指向内存空间
int *ptrInt=a;//ptrInt是指向int类型的指针
printf("sizeof(char):%d\n",sizeof(char));
printf("sizeof(int):%d\n",sizeof(int));
printf("sizeof(ptrChar):%d\n",sizeof(ptrChar));
printf("sizeof(ptrInt):%d\n",sizeof(ptrInt));
printf("value of ptrChar is:%d\n",ptrChar);
printf("value of (ptrChar+1) is:%d\n",ptrChar+1);
printf("value of ptrInt is:%d\n",ptrInt);
printf("value of (ptrInt+1) is:%d\n",ptrInt+1);
system("pause");
return 1;
}

程序运行结果如下:

从程序的运行结果可以得出:

指针本身是一个变量,它所存储的是另一个变量的地址,指针变量所占的内存是4个字节,这与它所指向的变量所占的内存空间大小是没有关系的,指针变量本身和它所指向的内存空间是完全独立的

9. C语言中数组作为函数参数

C中数组名代表该数组的首地址,
char
s[]="abc";
s代表的就是‘a’在内存中的地址
以地址作参数
,实参和形参同时改变

10. 在C语言中,数组作为参数,是怎样在函数之间传递

很简单的,数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 .给个程序看看

#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函数内声明被调函数
void convert(int array[][3]);
int i,j;
printf("输入数组:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//调用矩阵转置函数
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//设置数组中转置矩阵元素交换
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}

热点内容
手机端so反编译 发布:2025-05-15 04:50:55 浏览:610
linuxlamp安装 发布:2025-05-15 04:50:45 浏览:577
sqlplus缓存区怎么设置 发布:2025-05-15 04:50:44 浏览:857
shell脚本环境变量 发布:2025-05-15 04:45:18 浏览:693
安卓nba2k18什么时候出 发布:2025-05-15 04:38:42 浏览:393
王者安卓转苹果为什么显示失败 发布:2025-05-15 04:35:49 浏览:18
手机优酷缓存视频格式 发布:2025-05-15 04:13:45 浏览:210
公益电影分镜头脚本插画 发布:2025-05-15 04:08:37 浏览:961
数据压缩编码 发布:2025-05-15 03:58:44 浏览:726
java字符为空 发布:2025-05-15 03:57:11 浏览:547