当前位置:网站首页>C语言基础篇 —— 2-5 指针与函数知识点
C语言基础篇 —— 2-5 指针与函数知识点
2022-07-23 13:29:00 【Bazinga bingo】
指针与函数传参
普通变量作为函数形参
1、函数传参时,普通变量作为参数时,形参和实参名字可以相同也可以不同,实际上就是实参来替代对应的形参的。
2、在子函数内部,形参的值等于实参。原因是函数调用时实参的值赋值给形参 —— 传值调用
数组作为函数形参
1、数组名作为形参传参时,实际传递的不是整个数组,而是数组的首元素的首地址。(也就是整个数组的首地址)所以在子函数内部,传进来的数组名等于是一个指向数组首地址的指针
2、在子函数内传参得到的数组首元素首地址,和外面得到的数组首元素首地址的值是相同的。
指针作为函数形参
和数组作为函数参数是一样的
结构体变量作为函数形参
1、和普通变量是一样的。
2、因为结构体一般都是很大,所以如果直接用结构体变量进行传参,那么函数调用效率就会很低。解决方案:不要传变量,传变量的指针地址进去。
传值和传址调用(经典例子swap函数)
在C语言中没有传值和传址两种方式,C语言本身函数调用时一直都是传值的,只不过传的值可以是变量名,也可以是变量的指针。
输入型参数与输出型参数
1、函数名是一个符号,表示整个函数代码段的首地址,实质是一个指针常量,所以在程序中使用到函数名都是当地址用的,用来调用函数的。
2、函数体是函数的关键,由一对{ }括起来,包括很多句代码,函数体就是函数实际做的工作。
3、形参列表和返回值。形参是函数的输入部分,返回值是函数的输出部分。
4、没有参数列表和返回值,函数也能用。参数可以用全局变量。
函数传参中使用const指针
const一般用在函数中,用法是const int *p;
const用来修饰指针做函数传参,作用就在于声明在函数内部不会改变这个指针所指向的内容,所以给该函数传一个不可改变的指针(char *p = “linux”)不会触发错误,而一个未声明为const的指针的函数,你给他传一个不可更改指针的时候就要小心出现错误
void func_1(char *p)
{
*p = 'a';
}
void main(void)
{
char *a = "linux"; // 出现段错误,原因是:这个字符串存在于代码段不能改变的
char a[] = "linux"; // 可以运行,结果为“aiunx”
func_1(a);
return 0;
}
一般来说输入的参数为输入参数,输出的参数为输出参数。函数的参数可以有很多个,而返回值只有一个。如果函数要返回很多值要怎么办呢?
编程中函数的输入和输出都是靠函数参数,返回值只是用来表示函数执行的结果是成功还是失败
如果这个参数是用来做输入的,就叫输入参数;如果这个参数的目的是输出的,就叫输出参数。
输出参数就是用来让函数内部把数据输出到函数外部的
看到一个函数的原型后,怎么样一眼看出来哪个参数做输入哪个做输出?
函数传参如果的是普通变量那肯定是输入型参数;
如果传指针就有两种可能:
如果这个参数是做输入的(通常做输入的在函数内部只需要读取这个参数而不会需要更改它)就在指针前面加上const来修饰
如果函数形参是指针变量并且还没加const,那么表示这个参数是用来做输出型参数的。
边栏推荐
- 智慧物联网源码 带组态物联网源码 工业物联网源码:支持传感器解析服务,数据实时采集和远程控制
- 一文带你了解什么是TypeScript
- 48:第五章:开发admin管理服务:1:创建子工程【imooc-news-dev-service-admin】,管理服务模块;
- 浏览器同源策略
- opencv之打开摄像头、边缘检测
- 网络协议与攻击模拟:wireshark使用、ARP协议
- 拼多多APP商品详情接口获取activity_id值(拼多多activity_id接口)
- Squeeze-and-Excitation Networks(挤压和激励网络)
- 系统内存介绍和内存管理
- 【Redis】redis安装与客户端redis-cli的使用(批量操作)
猜你喜欢
随机推荐
同花顺上选择券商,网上客户经理开户安全吗
Nifi 1.16.3 cluster setup +kerberos+ user authentication
go run,go build,go install有什么不同
三方支付公司有哪些?
小米集团副总裁崔宝秋:开源是人类技术进步的最佳平台和模式
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
Squeeze-and-Excitation Networks(挤压和激励网络)
Leetcode-168.excel table column name
Compose Canvas饼图效果绘制
Tensorflow2.x actual combat series softmax function
中国化NFT?NFR横空出世
【笔记】线性回归
FIO performance testing tool
Notes on Microcomputer Principle and technical interface
Surface family purchase reference
Satisfiability of the equation of leetcode
COPU副主席刘澎:中国开源在局部领域已接近或达到世界先进水平
【Redis】redis安装与客户端redis-cli的使用(批量操作)
Distance IOU loss: faster and better learning for bounding box regression
Visual analysis of real-time epidemic data







![[note] linear regression](/img/71/7c1255e94f08cc0eab2ca32977f29d.png)
