博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组做函数参数和结构体做函数参数之间的一些区别
阅读量:4212 次
发布时间:2019-05-26

本文共 890 字,大约阅读时间需要 2 分钟。

(1)    数组做函数参数,注意看注释:

#define  _CRT_SECURE_NO_WARNINGS #include
#include
#include
typedef struct Teacher { int age; char name[64];} Teach;void call(int array[]){ array[1] = 5; //这里会改变原来的值(原来为2,然后变成5),因为数组做函数参数的时候,会退化为指针,其会指向原来的地址,因此会改变。}int main1(){ int array[] = { 1,2,3 }; printf("%d \n", array[1]); //输出2 call(array); printf("%d \n",array[1]); //输出5 return 0;}

(2)  结构体做函数参数,注意看起注释,代码如下:

 

#define  _CRT_SECURE_NO_WARNINGS #include
#include
#include
typedef struct Teacher { int age; char name[64];} Teach;void call(Teach t){ t.age = 19; //这里并不能改变原来的值,理解这里的关键是理解c语言中的栈空间,堆空间,代码区,全局区}void call1(Teach *t){ t->age = 19; //这里改变了原来的值,因为这里是一个指针,哪怕是栈区间,也改变了其指向}int main(){ Teach t = { 12,"tgy" }; printf("%d\n", t.age); //输出12 call(t); printf("%d\n", t.age); //输出12 call1(&t); printf("%d\n", t.age); //输出19 return 0;}

 

 

转载地址:http://zqzmi.baihongyu.com/

你可能感兴趣的文章
dos调度ETL转换
查看>>
mysql myisam optimize任务
查看>>
myisamchk命令使用总结
查看>>
report server tempdb 过大问题
查看>>
sql server时间戳timestamp
查看>>
mysql 添加时间戳
查看>>
为什么在WinXP系统上无法安装SQL2000的服务器组件?
查看>>
Pentaho 之Schame workbench入门实例
查看>>
pentaho 示例Cube配置详解(SQL Server版本)
查看>>
SQLSERVER数据库管理员的专用连接DAC
查看>>
SQL Server 2008中Service Broker基础应用(上)
查看>>
新下载kettle不能启动问题
查看>>
mysql sp
查看>>
SELECT ... FOR UPDATE LOCK IN SHARE MOD
查看>>
恢复oracle数据到以前的某个时间点
查看>>
mysql kettle 分页
查看>>
mongoDB 入门指南、示例
查看>>
不存在插入的一种写法
查看>>
p_vipshop_to_actual_day_shop_sale
查看>>
写MySQL存储过程实现动态执行SQL
查看>>