当前位置:首页 » 编程语言 » c语言函数传递数组

c语言函数传递数组

发布时间: 2022-08-31 15:01:24

‘壹’ c语言函数怎么传数组

C和C++都没有办法传数组,只能传“指针”,指针和数组的差别就在于函数内无法检测数组的尺寸

‘贰’ c语言函数传数组问题

第二张图:函数声明是可以不加n的,下面的是直接写a[]是因为有初始化,n的值即为里面初始化的参数个数。
第三张图:函数里面没有定义局部的n,就需要传参数进去,因为C语言一般情况下是不支持a[n],如果n未知。

‘叁’ c语言数组在函数中的传递

c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!

‘肆’ C语言 主函数传递数组给子函数

你的
代码
不全,我只能给你分析一下这种情况常见的错误了。
1、要返回
数组
定义
在子
函数
中。在函数体内部定义的数据
变量
,如果未加修饰符(static和extern),那么她是局部的,函数执行完毕之后
内存
释放,造成你访问
错误
。你
下边
的那个例子定义的数组是
全局变量
,先不说了下班了晚上补充

‘伍’ 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语言中可以用二维数组作为实参或者形参。


1、函数中用二维数组作为形参,函数声明中可以指定所有维数的大小,也可以省略第1维的维数如:

voidf(intarray[3][10]);//正确
voidf(intarray[][10]);//正确

上面的两种二维数组形参表示都是正确的。


2、函数中用二维数组作为形参,不能把第2维或者更高维的大小省略,如下面的定义是不合法的:

voidf(intarray[][]);//错误

因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多少列,不能只指定一维而不指定第二维,下面写法是错误的:

voidf(intarray[3][]);//错误

3、二维数组作为实参传递时,必须保证实参第2维的维数与形参第2维的维数相同,因为必须要保证形参和实参的数据类型一致。比如定义如下函数:

voidf(intarray[][10]);

可以将如下数组传递给函数f。

inta[2][10]={1,2,3,4};
intb[4][10]={1};

‘柒’ 在C语言中,数组作为参数,是怎样在函数之间传递的啊

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

‘捌’ 在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;
}
}

‘玖’ 请问在C语言中,函数传参时怎样利用指针传递数组

数组名就是指针,例如:

#include <stdio.h>

voidpr(char *p)

{

printf(p);

}

void main(void)

{

char s[] = "abc";

pr(s);

}

(9)c语言函数传递数组扩展阅读:

注意事项

非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:

int main(int argc,char* argv[])

{

/* code here */

}

int main(int argc,char** argv)

{

/* code here */

}

两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。

‘拾’ C语言怎么向自定义函数中传入一个数组,处理完再返回新的数组

看你的代码。

你问题并不在数组传入。你函数mymd5接收password数组,mymd5的password数组变量和外部函数的password地址相同,所以改变其中外部函数的数组也改变。

但你mymd5返回的数组decrypt,是局部变量,当mymd5调用结束,这个数组的内存空间就释放了。你接收了也是NULL。所以要用malloc或calloc申请动态内存。这样不会被释放。

我写了简单案例,你参考:

#include<stdio.h>
#include<malloc.h>
#include<string.h>

char*md(chara[]);//错误的数组返回
char*md2(chara[]);//正确的数组返回
intmain()
{
charpassword[10]="123456789",*decrypt=NULL;
decrypt=md(password);
printf("外部函数传递数组到子函数,子函数改变,外部函数也改变,password=%s ",password);
printf("错误返回方式:局部变量,外部函数接收失败,被自动释放,decrypt=%s ",decrypt);
decrypt=md2(password);
printf("正确返回方式:动态申请,外部函数接收成功,不会被自动释放,decrypt=%s ",decrypt);
return0;
}
char*md(charpassword[])
{
chardecrypt[10]="*********";
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}
char*md2(charpassword[])
{
char*decrypt=(char*)malloc(sizeof(char)*10);
if(!decrypt)
returnNULL;
strcpy(decrypt,"*********");
password[0]=0,strcpy(password,"abcdefghi");
returndecrypt;
}

热点内容
如何登录男朋友的微信密码 发布:2025-01-16 07:41:14 浏览:193
宝骏解压流程 发布:2025-01-16 07:35:35 浏览:1
两匹压缩机多少钱 发布:2025-01-16 07:29:19 浏览:634
个人pc搭建游戏服务器 发布:2025-01-16 07:27:09 浏览:969
存储剩余照片 发布:2025-01-16 07:25:01 浏览:49
ftp解除限制上传文件个数 发布:2025-01-16 07:16:26 浏览:347
梯度下降法python 发布:2025-01-16 07:10:43 浏览:519
加载并编译着色器apex 发布:2025-01-16 07:00:08 浏览:58
方舟出售脚本 发布:2025-01-16 06:57:55 浏览:954
钉钉代理服务器Ip地址和瑞口 发布:2025-01-16 06:57:05 浏览:698