指针将值传递

原文地址:https://www.cnblogs.com/liqinglucky/p/pointer_value.html

指针

#include<stdio.h>
void msg(int *in,int *out)
{
    int *sen;
    int *rec;
    sen = in;//send的地址通过in赋值给sen
    rec = out;//recv的地址通过out赋值给rec
    *rec = *sen;//改变rec存放地址的内容
}

void main(void)
{
    int send = 1;
    int recv;
    int *in  =&send;
    int *out =&recv;

    msg(in,out);
    send=2;//改变send的值
    printf("recv=%d,*in=%d\n",recv,*in);
}

运行结果

recv=1,*in=2


recv的值在msg函数中重新赋值了,存放内容改变为原来的send的值。而in是一个指针变量,存放的是send的地址,当用*in查找该地址的内容时,找到的是新的赋值。

当指针变量被传递并且如果值被修改,则在调用者作用域内更新是有效的。假定我们有一个超过15个数据成员的非常大的结构体变量,指针相比传递地址,如果按值传递发送这个变量到函数将花费更多时间。

指针就是我们做PPT时想插入一本书,如果把整本书内容都复制到PPT,占用的版面是特别多的。通常我们就插入一个超链接到指定的文件夹下的书名。只要我们点击超链接,就能找到那本书。但也可能出现这样的错误,如果我们把书移动到另一个文件夹了,超链接就失效了。就如指针地址为NULL一样。

 

posted @ 2023-06-29 08:48  liqinglucky  阅读(19)  评论(0编辑  收藏  举报