请问在C语言中,函数传参时怎样利用指针传递数组
发布网友
发布时间:2022-07-12 23:38
我来回答
共5个回答
热心网友
时间:2022-06-29 02:57
数组名就是指针,例如:
#include <stdio.h>
void pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
扩展资料:
注意事项
非数组类的声明尽量以指针的方式进行比较好。倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导。类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息。例如:
int main(int argc,char* argv[])
{
/* code here */
}
与
int main(int argc,char** argv)
{
/* code here */
}
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。
热心网友
时间:2022-06-29 04:15
比如函数需要一个整型数组:
void ex(int a[])
{
}
或者可以写成:
void ex(int *a)
{
}
效果是一样的。
使用的时候:
引用数组中的第2个元素(即下标为1的元素)
a[1]
或者*(a+1)
基本上与数组的正常使用没有区别。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
热心网友
时间:2022-06-29 05:50
声明:
int arr(int a[]);<=>int arr(int *a);(计算机会把前者也翻译成后者处理,效果等价)
数组名就是指针
int a[5]={1,2,3,4,5};
引用时:
arrey=arr(a);
其实形参是一个指向该数组的指针,而数组只有一个,指向即操作
返回数组值我不知道你想问什么
热心网友
时间:2022-06-29 07:41
直接上例子:
比如函数需要一个整型数组:
void ex(int a[])
{
}
或者可以写成:
void ex(int *a)
{
}
效果是一样的。
使用的时候:
引用数组中的第2个元素(即下标为1的元素)
a[1]
或者*(a+1)
基本上与数组的正常使用没有区别。
(但要注意 由于调用函数时只传递了指针(首地址) 所以程序不会做超界检查)
========================补充============================
你在子函数中进行的更改会直接影响到原数组的内容
这也就意味着 只要你在处理函数中更改了数据 那么任何函数(包括原函数)访问这个数组时 都使用的是你更改以后的数值
热心网友
时间:2022-06-29 09:49
数组名就是指针,例如:
#include <stdio.h>
void pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}
请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:include <stdio.h> void pr(char *p){ printf(p);} void main(void){ char s[] = "abc";pr(s);}
C语言中,数组做函数参数如何才能按值传递?
传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。实际情况是,数组做参数,完全无法按值传递。这是由C/C++函数的实现机制决定的。下一个问题是:为什么偏要按值传递呢?当要...
C语言自定义函数怎么传参,一次性把数组的数据全部传入?
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;...
C语言中 指针做函数参数传递二维数组
void fun(int (*p1)[3],int (*p2)[3]);int main(){ int p1[3][3]={{7,8,9},{4,5,6},{1,2,3}} ;int p2[3][3] = {0};int i = 0, j = 0;fun(p1,p2);for(i = 0;i < 3;i++){ for(j = 0;j < 3;j++){ printf("%d ",*(*(p2+i)+j));} prin...
c语言,如何用指针向函数传递一个三维数组,并在函数内用该指针改变三位数...
void fun(a,10) 将数组a的首地址赋给指针s { int i; i 计的是这数组中有几个字母 for (;*s;s++) 每循环一次,s后移一位,判断结束循环的条件s指向的内容为" \0 "{ if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z') i++;} ...
C语言中向一个函数传递一个数组,函数中定义一个指针变量,请问这个指针...
指针传递到函数后,函数可以像用数组一样使用它,比如你传入的是int *a,如果数组大小为n,那么就可以 for(int i=0;i<n;i++)dd = a[i];来访问数组中的元素值了!
为什么C语言函数传参数的时候要传指针?
代码在编译时会出现 error C2664: 'InsertSort' : cannot convert parameter 1 from 'int' to 'int []'这是因为用数组名做函数实参时,向形参(数组名或指针变量)传递的是数组首元素地址,因此对参数的类型做一下改变,如下图所示:
c语言数组在函数中的传递
数组名本身就是地址,你在定义你两个方法时就定义指针类型就可以了,,然后能够直接操作数组的数据
C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递方式是什么...
函数只有两种传递方式:1、值传递,又称单向传递,只能把实参数值传给形参 ,形参最后的结果不影响实参(形参改变大小 ,实参大小不变)。2、址传递,通过指针,把实参的地址给形参,形参的大小可以影响实参。
C语言中,指针数组作为主函数的形参整个过程怎么操作??以图片主函数为例...
对于主函数的参数, argc 和 argv可以说是在程序执行的时候传递的 其中:argc 指执行程序时命令参数的个数,argv 可以说是一个字符二级指针,也就是是字符串数组 如果执行命令如下:./a.out China BeiJing 则此时argc = 3;argv[0]的内容为 ./a.out argv[1]的内容为 China argv[2]的内容为 ...