c语言数组如何在函数中传递?不要指针传递
发布网友
发布时间:2022-04-26 15:27
我来回答
共2个回答
好二三四
时间:2022-06-29 05:49
现在我们来看看,C语言如何如何传递数组。
首先,我们可以在参数中直接写数组加【】。
我们也可以给他写上下标。
同时,还可以以指针形式传递。
如果是二维数组,列下标一定不能省略。
但是,定义的时候,不可以用变量来声明元素。
运行测试,我们会发现可以正常运行。
好二三四
时间:2022-08-24 06:53
现在我们来看看,C语言如何如何传递数组。
首先,我们可以在参数中直接写数组加【】。
我们也可以给他写上下标。
同时,还可以以指针形式传递。
如果是二维数组,列下标一定不能省略。
但是,定义的时候,不可以用变量来声明元素。
运行测试,我们会发现可以正常运行。
热心网友
时间:2024-09-04 09:36
数组只能通过指针传递,不能通过值传递。
数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.
1. 数组参数就是指向第一个元素的指针: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接声明为指针: #include <stdio.h>
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形参中指定维数也不起作用: #include <stdio.h>
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指针, 其值就有被修改的可能: #include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}
5. 如果是字符数组, 它自己能判断数组尾界: #include <stdio.h>
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
热心网友
时间:2024-09-04 09:37
C语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
c语言数组如何在函数中传递?不要指针传递
数组只能通过指针传递,不能通过值传递。数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的指针: #include <stdio.h> void getArr(int...
c语言数组如何在函数中传递 不要指针传递
C语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
C语言中,数组做函数参数如何才能按值传递?
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。下一个问题是:为什么偏要按值传递呢?当要...
c语言存字符串到一个函数,然后用主函数输出,可以不用指针嘛,各位大佬救 ...
可以使用C语言中的数组来存储字符串,并通过函数来操作这个数组,最后在主函数中输出这个数组,无需使用指针。例如,下面的代码演示了如何在函数中存储字符串,并在主函数中输出这个字符串:这个程序中,store_string 函数接受一个 char 数组 str 作为参数,并使用 strcpy 函数将字符串 "Hello, world!" ...
c语言数组在函数中的传递
数组名本身就是地址,你在定义你两个方法时就定义指针类型就可以了,,然后能够直接操作数组的数据
C语言 二维数组除了用指针传递给自定义函数 还能用其他方法吗_百度知 ...
C语言中 指针做函数参数传递二维数组有两种基本方法:1、传递“数组指针”include <stdio.h>void output( int (*pa)[3], int n )//这个函数只能输出n行3列的二维数组{ int i,j; for( i=0;i<n;i++ ){ for( j=0;j<3;j++ ) printf("%d ", pa[i][j] ); prin...
C语言问题,请问二维数组的函数参数是怎么传递的?
数组为参数时会退化为一个二级指针传递,如图,可以将函数头部写成 void shuchu(int **array_num);在函数中调用时,直接传递数组名就可以了,数组名可以视为数组的“头指针”,可以用这个指针进行一系列的相关操作,如图,可以按如下方式调用 shuchu(a);另外,一个建议:不要在传参时忽略数组的长度...
C语言的函数调用中怎样判断是地址传递还是值传递?
int,char,float,结构体,枚举,联合均为值传递;数组名,指针,引用均为地址传递;比如 func(int,char,float,struct S)值传递 func(int *,int a[],int &a)地址传递
用C语言写了一个输入一个一维数组的函数,如何在后来写的函数中调用该...
在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。在大多数情况下,一维数组和一维指针是可以通用的。比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。代码可以写成如下形式:int*int_array_create(int n)//...
关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:2、添加一个array.c文件,如图所示:3、包含stdio.h和stdlib.h头文件,如图所示:4、输入main函数主体及返回值,如图所示:5、定义一个数组arr,如图所示:6、定义一个function函数,如图所示:7、将数组作为参数传递给function函数,如图所示:8、运行程序,输出...