C语言结构体指针与结构体变量作形参的区别
区别
结构体变量
- 结构体变量作为形参,传递的是结构体变量本身,是一种值传递
- 形参结构体变量成员值的改变不影响对应的实参构体变量成员值的改变
结构体指针
- 结构体指针作为函数参数,传递的是指向结构体变量的本身
- 结构体指针指向的变量成员值的改变影响对应的实参构体变量成员值的改变
代码
直接说有些抽象难懂,敲代码演示一遍就很清楚了
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct stru{
int num;
};
//形参为结构体变量
void addNum(struct stru p, int num2)
{
p.num += num2;
}
//形参为结构体指针
void addNum2(struct stru *p, int num2)
{
if(!p) return; //确保指针不为空指针
p->num += num2;
}
int main(){
struct stru t;
t.num = 50;
addNum(t,5000);
printf("形参为结构体变量得到的结果为: %d\n", t.num);
addNum2(&t,5000);
printf("形参为结构体指针得到的结果为: %d\n", t.num);
return 0;
}
输出结果
形参为结构体变量得到的结果为: 50
形参为结构体指针得到的结果为: 5050
C语言结构体指针与结构体变量作形参的区别的更多相关文章
- 嵌入式-C语言:通过结构体指针操作结构体内容
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...
- 嵌入式-C语言基础:通过结构体指针访问结构体数组
#include<stdio.h> #include<string.h> struct Student { char name[32]; int age; int height ...
- (60) 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用
#include<stdio.h> #include<iostream> #include<malloc.h> /* author : 吴永聪 program: 结 ...
- 指向结构的指针 struct结构名称 *结构指针变量名
//指向结构的指针 struct结构名称 *结构指针变量名 //(*结构指针变量名).成员变量名//结构指针变量->成员变量名 1 #include<stdio.h> 2 #incl ...
- STM32——C语言知识点:指针、结构体
/* ============================================================================ Name : Cyuyanfuxi.c ...
- go语言的结构体指针
Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比 ...
- c语言指针与结构体
#include <stdio.h> #include <stdlib.h> struct mydata { int num; ]; }; void main1() { /*i ...
- C语言--- 高级指针2(结构体指针,数组作为函数参数)
一.结构体指针 1. 什么是结构体指针?指向结构体变量的指针 结构体: typedef struct stu{ char name[ ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
随机推荐
- 6张图为你分析Kafka Producer 消息缓存模型
摘要:发送消息的时候, 当Broker挂掉了,消息体还能写入到消息缓存中吗? 本文分享自华为云社区<图解Kafka Producer 消息缓存模型>,作者:石臻臻的杂货铺. 在阅读本文之前 ...
- 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践
确定应用程序类型 在 Citus 集群上运行高效查询要求数据在机器之间正确分布.这因应用程序类型及其查询模式而异. 大致上有两种应用程序在 Citus 上运行良好.数据建模的第一步是确定哪些应用程序类 ...
- linux下yum无法安装lrzsz,Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal
镜像下载.域名解析.时间同步请点击阿里云开源镜像站 linux虚拟机上准备安装一下rz sz,执行yum命令后提示如下: [root@tony001 ~]# yum install lrzsz Cen ...
- Activemq特性之持久化--LevelDB特性
LevelDB持久性适配器使用LevelDB作为高性能的消息存储.它是一个基于文件的存储库,它使用了Google的LevelDB,将索引保存到包含消息的日志文件中.它经过优化,提供了比KahaDB更快 ...
- Linux下编译安装配置MariaDB数据库
说明:操作系统:CentOS 6.6 64位MariaDB版本:mariadb-5.5.33aMariaDB数据库存放目录:/data/mysql准备:一.配置防火墙,开启3306端口vi /etc ...
- python中判断为None
python中经常会有判断一个变量是否为None的情况,这里列举三种方式: if not x if x is None if not x is None *********************** ...
- Django1.11 添加markdown语法支持
pip install markdown 在view.py 的视图界面:导入,圈起来的那两个包 对post进行处理, models.py 详情如下 测试,效果如图
- Python库国内镜像
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ http://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣 http://py ...
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》2
Paper Information 论文作者:Zhen Peng.Wenbing Huang.Minnan Luo.Q. Zheng.Yu Rong.Tingyang Xu.Junzhou Huang ...
- GitHub还能这样玩,这次我真是开了眼了
哈喽,大家好,我是指北君. 我会一直在"开源指北"公众号给大家分享各种有趣. 实用与最前沿的开源项目,还有各种互联网干货, 今天主要给大家分享一下GitHub的一些使用技巧,帮助你 ...