c语言传入的指针无返回值,c语言 关于指针注意事项
使用指针变量作为函数参数时,只有在获取地址的情况下对元素(*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语言 关于指针注意事项相关推荐
- c语言枚举如何当函数返回值,C语言学习五 — 数组与枚举
数组 C 语言支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合.数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量. 数组的声明并不是声明一个个单独的变量,比如 numbe ...
- c语言自定义函数多个返回值,C语言函数返回值
C语言函数返回值教程 如果,我们希望函数不返回任何值,那么我们需要显式的指明其返回类型为 C语言函数不返回值 语法 void funcName(paramType1 param1, paramType ...
- C语言编程的按位或返回值,c语言的按位运算符怎么操作!?
c语言的按位运算符怎么操作!? 答案:2 信息版本:手机版 解决时间 2019-10-06 03:32 已解决 2019-10-05 10:30 就是& | ^ - >> < ...
- C语言:一个涉及指针函数返回值与printf乱码、内存堆栈的经典案例
C语言:一个涉及指针函数返回值与printf乱码.内存堆栈的经典案例 一个奇怪的C语言问题,涉及到指针.数组.堆栈.以及printf.以下实现: 整数向字符串的转换,返回字符串指针,并在main函数中 ...
- C语言函数无返回值 参数
void的两种说法: 1.void代表无返回值,不需要return 2.void代表返回值的类型是无类型,return要写但后面不加变量 形式参数,意思有点类似变量定义,写法类似变量的定义 如果调用的 ...
- Swift2.0语言教程之函数的返回值与函数类型
Swift2.0语言教程之函数的返回值与函数类型 Swift2.0中函数的返回值 根据是否具有返回值,函数可以分为无返回值函数和有返回值函数.以下将会对这两种函数类型进行讲解. Swift2.0中具有 ...
- ostream作为函数返回值_GO语言基础函数
GO语言基础–函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数定义 Go语言中定义函数使用func关键字,具体格式如下: func 函数名(参数 ...
- r语言 c 函数返回值,R语言入门 输出函数 cat、print、paste等区别理解
一. 简介 cat.print函数都是输出函数 > cat("hello world") hello world >> print("hello wor ...
- 函数:无参无返回值函数的使用
1.定义格式 函数构成代码执行的逻辑结构,在go语言中,函数的基本组成为:关键字func.函数名.参数列表.返回值.函数体和返回语句 go语言中函数定义的格式如下: func FuncName(/参数 ...
最新文章
- Lumen框架多数据库连接配置方法
- 学习别跟我谈兴趣 No.88
- [开学季]“当高校遇到大数据”濮阳职业技术学院阿里云大数据应用学院举行阿里云开学第一课...
- 安装Rabbitmq脚本
- OpenGL油画效果
- HDU 5514 Frogs (容斥原理)
- 数据库MySQL(课下作业,必做)
- Windows程序中的Lib和Dll文件
- Android - get email attachment name in my application
- Apache Solrj EmbeddedSolrServer使用
- 正则爬取猫眼电影排行榜 待修改版
- c语言 库仑计_bq27520电量计的量产设计
- 给计算机系统打补丁,为什么我的电脑需要打补丁?
- JavaScript常见的六种继承方式
- 逆向入门(4)汇编篇-常用指令的学习
- 深入探究 null 和 undefined 区别
- java 字符串 哈希值_Java 获取字符串Hash值
- H. Zebras and Ocelots -ICPC North Central NA Contest 2017
- apache commons fileupload 团队
- ifconfig安装
热门文章
- 广西工学院2000级计算机系,广西工学院管理系信管教研室李明 - 欢迎访问广西科技大学.ppt...
- 3条原则,16个小点,帮你写出一个优秀的对外接口!
- 新入职了一个卷王,天天加班12点!张口闭口就是性能优化,太让人崩溃……...
- windows server2008 r2 下启用 sqlserver 2008的远程连接
- lisp语言100以内勾股数_三个视频搞定:函数的最值、对勾函数、分式函数性质与图像、分段函数最值...
- linux hal-get-property进程说明,Android HAL property_get() 函数用法
- 【Webpack5 配置分包加载 多文件js/css打包 】
- Springcloud 高效率本地加Redis双级缓存
- 单链表算法设计(含大厂面试题)
- 一个自动化测试的案例之记事狗微博篇