C语言函数传递连续空间涵义以及地址传递函数的只读性,和读写特性

本文解释了C语言中为何使用地址传递处理结构体和数组,强调了结构体指针相对于结构体的内存优势。同时讨论了函数参数的读写特性,以const和非const修饰符为例,指出何时选择只读和读写特性,如strcpy函数的用法。
摘要由CSDN通过智能技术生成

     C语言函数函数传递连续空间的定义,一般的连续空间有结构体和数组,传递的方式一般大多数都会使用地址传递,为什么?接下来我会给大家分析为什么使用地址传递。

1.连续空间如结构体和数组

 使用结构体作为连续空间传递应该用结构体指针的方式
 例如:

void fun(abc *c)
{

}

也可以用结构体的方式:

void fun(abc c)
{

}

以上两种方式的区别在于,结构体指针的方式和结构体的方式去传递连续空间的时候,结构体的方式每次都会开辟一整块的地址,非常浪费内存,而结构体指针的方式不会
 

连续空间传递数组也是一样,尽量用指针的方式去传递

2.地址传递函数的只读性,和读写特性

例如一个函数:

void fun(const char *buf)
{

}

上面这个函数的输入参数为:const char *buf,说明这一段空间是只读可性不能被修改,否者出现段错误。

接下来分析一个一个函数传递参数的读写特性例如以下代码:

void fun(char *buf)
{

}

上面这个函数的输入参数为:char *buf,说明这一段空间是读写特性,给用户可读可写。

通过以上两个例子,可知道在连续空间传递地址的时候什么时候用只读特性或者读写特性
例如C语言标准库中的 char *strcpy(char *dest,const char *src);
这个函数中第一个是读写特性,第二个参数为只读特性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DENG YIRU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值