请问在C语言中,函数传参时怎样利用指针传递数组
数组名就是指针,例如:
#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 */
}
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义。
比如函数需要一个整型数组:
void ex(int a[])
{
}
或者可以写成:
void ex(int *a)
{
}
效果是一样的。
使用的时候:
引用数组中的第2个元素(即下标为1的元素)
a[1]
或者*(a+1)
基本上与数组的正常使用没有区别。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
比如函数需要一个整型数组:
void ex(int a[])
{
}
或者可以写成:
void ex(int *a)
{
}
效果是一样的。
使用的时候:
引用数组中的第2个元素(即下标为1的元素)
a[1]
或者*(a+1)
基本上与数组的正常使用没有区别。
(但要注意 由于调用函数时只传递了指针(首地址) 所以程序不会做超界检查)
========================补充============================
你在子函数中进行的更改会直接影响到原数组的内容
这也就意味着 只要你在处理函数中更改了数据 那么任何函数(包括原函数)访问这个数组时 都使用的是你更改以后的数值
int arr(int a[]);<=>int arr(int *a);(计算机会把前者也翻译成后者处理,效果等价)
数组名就是指针
int a[5]={1,2,3,4,5};
引用时:
arrey=arr(a);
其实形参是一个指向该数组的指针,而数组只有一个,指向即操作
返回数组值我不知道你想问什么
#include <stdio.h>
void pr(char *p)
{
printf(p);
}
void main(void)
{
char s[] = "abc";
pr(s);
}