使用指针变量作为函数参数时,只有在获取地址的情况下对元素(*p)进行操作,才能真正地修改变量。因为此时实参传给形参,就是将堆上的申请的首地址传给形参,这样形参和实参都指向了堆上的内存,形参对堆上内存内容的修改,实参也是得到了修改。但是对传入地址(p)进行操作是无法对原指针本身进行修改的。因为函数在接收参数的过程中是单向的一次性值传递,此时的参数传入地址,调用函数时只是对值参产生一个副本,对副本的操作不会影响原值,也就是说不会改变传入地址。

例:

void swap(int* a,int* b){

int* temp=a; //企图通过地址交换达到交换的目的! 错误!!

a=b;

b=temp;

}

//因为指针变量实际上是unsigned型的变量 所以上述代码可以这么理解:

void swap(unsigned int a,unsigned int b){ //int*=unsigned int

unsigned int temp=a;

a=b;

b=temp;

}

//这样就容易理解为何出错了

如果真的希望能够修改主函数传进来的指针变量,可以通过引用&、给函数加指针型的返回值、双重指针(后续补充,因为不会)来解决。

引用&:

void swap(int* &a,int* &b){

int* temp=a;

a=b;

b=temp;

}

指针型返回值:

由于c语言函数只能返回一个值,故换个链表初始化的例子:

mylist * initlist(){ //mylist为所定义的结构体类型

mylist *s;

s=(mylist *)malloc(sizeof(mylist));

s->next=NULL;

return s;

}//使用函数返回值的办法

void initlist(mylist* &s){

s=(mylist *)malloc(sizeof(mylist));

s->next=NULL;

}//使用引用的办法

双指针:

由于c语言函数返回值只能有一个,当遇到需要输出大于一个返回值时,可以采取全局变量、返回数组或者结构体指针的办法,例子后续补充(因为暂无时间)。

c编译器没有引用&,但是可以使用双重指针;c++支持引用&。

c语言传入的指针无返回值,c语言 关于指针注意事项相关推荐

  1. c语言枚举如何当函数返回值,C语言学习五 — 数组与枚举

    数组 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 numbe ...

  2. c语言自定义函数多个返回值,C语言函数返回值

    C语言函数返回值教程 如果,我们希望函数不返回任何值,那么我们需要显式的指明其返回类型为 C语言函数不返回值 语法 void funcName(paramType1 param1, paramType ...

  3. C语言编程的按位或返回值,c语言的按位运算符怎么操作!?

    c语言的按位运算符怎么操作!? 答案:2  信息版本:手机版 解决时间 2019-10-06 03:32 已解决 2019-10-05 10:30 就是& | ^ - >> < ...

  4. C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例

    C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...

  5. C语言函数无返回值 参数

    void的两种说法: 1.void代表无返回值,不需要return 2.void代表返回值的类型是无类型,return要写但后面不加变量 形式参数,意思有点类似变量定义,写法类似变量的定义 如果调用的 ...

  6. Swift2.0语言教程之函数的返回值与函数类型

    Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...

  7. ostream作为函数返回值_GO语言基础函数

    GO语言基础–函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数 ...

  8. r语言 c 函数返回值,R语言入门 输出函数 cat、print、paste等区别理解

    一. 简介 cat.print函数都是输出函数 > cat("hello world") hello world >> print("hello wor ...

  9. 函数:无参无返回值函数的使用

    1.定义格式 函数构成代码执行的逻辑结构,在go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句 go语言中函数定义的格式如下: func FuncName(/参数 ...

最新文章

  1. Lumen框架多数据库连接配置方法
  2. 学习别跟我谈兴趣 No.88
  3. [开学季]“当高校遇到大数据”濮阳职业技术学院阿里云大数据应用学院举行阿里云开学第一课...
  4. 安装Rabbitmq脚本
  5. OpenGL油画效果
  6. HDU 5514 Frogs (容斥原理)
  7. 数据库MySQL(课下作业,必做)
  8. Windows程序中的Lib和Dll文件
  9. Android - get email attachment name in my application
  10. Apache Solrj EmbeddedSolrServer使用
  11. 正则爬取猫眼电影排行榜 待修改版
  12. c语言 库仑计_bq27520电量计的量产设计
  13. 给计算机系统打补丁,为什么我的电脑需要打补丁?
  14. JavaScript常见的六种继承方式
  15. 逆向入门(4)汇编篇-常用指令的学习
  16. 深入探究 null 和 undefined 区别
  17. java 字符串 哈希值_Java 获取字符串Hash值
  18. H. Zebras and Ocelots -ICPC North Central NA Contest 2017
  19. apache commons fileupload 团队
  20. ifconfig安装

热门文章

  1. 广西工学院2000级计算机系,广西工学院管理系信管教研室李明 - 欢迎访问广西科技大学.ppt...
  2. 3条原则,16个小点,帮你写出一个优秀的对外接口!
  3. 新入职了一个卷王,天天加班12点!张口闭口就是性能优化,太让人崩溃……...
  4. windows server2008 r2 下启用 sqlserver 2008的远程连接
  5. lisp语言100以内勾股数_三个视频搞定:函数的最值、对勾函数、分式函数性质与图像、分段函数最值...
  6. linux hal-get-property进程说明,Android HAL property_get() 函数用法
  7. 【Webpack5 配置分包加载 多文件js/css打包 】
  8. Springcloud 高效率本地加Redis双级缓存
  9. 单链表算法设计(含大厂面试题)
  10. 一个自动化测试的案例之记事狗微博篇