函数传参指针类型和一般类型的区别

首先说一下:本人编程处于起步阶段,很多东西说的可能不标准甚至不对,因为大部分都是自己对于书上知识的理解。欢迎大家指出,互相进步。

有时候,我们在看别人编写的程序时,会发现,函数传参时有时候传的是一个地址(或者说指针),有时候传的是一个整型(或者其他类型,反正不是指针类型),这是为什么呢?

我们先来举个例子,我们定义一个函数:

int add(int a, int b)

{

int c = 0;

c = a + b;

return c;

}

不知道大家发现没有,我们定义函数的两个参数都是往函数内传递的值(可以理解为输入型参数)。假设我们现在有这种需求,我们想让函数的执行结果通过传参传递出来(比如说本例中的相加之后的c),那应该怎么办呢?

我知道,大家肯定有这样的疑问,既然都能通过return返回函数的执行结果,那我们为什么还需要通过参数将结果传递出来呢?

首先第一个,return只能返回一个值,假设在这个函数中,我想返回两个值,一个是两个参数(a和b)相加之后的结果,另一个是两个参数相减之后的结果,return应该就不行了吧。

第二点就是,很多系统函数的返回值并不是函数的执行结果,而返回的是0,1,或者-1,用来判断该函数有没有执行成功,而并不是这个函数执行的结果。


好了,下面我们来演示一下函数参数是地址(或者叫指针的形式):

int add(int a, int b, int *p)

{

int c = 0;

c = a + b;

*p = c;

return 0;

}

看见没有,我们没有通过return就将结果输出了出来。是不是明白了一丢丢。


最后,可能有同学已经发现,当我们想要传递一个字符串的时候,只能通过指针的形式进行传递,但是有时候我们是往函数里面传,有时候我们是将结果传递出来。那我们怎么区分呢?

首先,在很多系统函数定义参数的时候都有一个const  char *,比如说这个strcpy函数char *strcpy(char *dest, const char *src);这个const就表示这个参数内容不能被改变,大家发挥自己的想象力,既然一个参数内容不能被改变,那肯定是将这个参数往函数内部传啊。而不带const的往往都是往外传递的参数(注意用了往往一词,因为有时候我们自己定义的函数往往都不太严谨,可能不管是输入的还是输出的都不加const,所以这时需要我们对整个程序分析一下)。


谢谢,每一个看的人,我只是一个刚入编程不久的人,如果有不准确或者出错的地方,欢迎指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值