变量,指针,地址之间的关系,以及注意事项
创作时间:
作者:
@小白创作中心
变量,指针,地址之间的关系,以及注意事项
引用
CSDN
1.
https://m.blog.csdn.net/qq_55546044/article/details/141966019
在C语言中,变量、指针和地址之间的关系是编程的基础。本文将从概念出发,逐步深入讲解变量、指针、函数名、结构体变量和数组名等概念及其相互关系。
1、概念
无论是变量还是指针,都是由值(value)和地址(address)组成的。理解这一点是掌握C语言编程的关键。
2、变量
变量是程序中用于存储数据的内存空间。每个变量都有一个唯一的地址,可以通过取地址运算符(&)获取。例如:
int a = 10;
printf("%p", &a); // 输出变量a的地址
3、指针
指针是一种特殊类型的变量,其值为另一个变量的地址。通过指针,可以直接访问和操作内存中的数据。例如:
int a = 10;
int *p = &a; // p是指向a的指针
printf("%d", *p); // 输出a的值
4、函数名
函数名代表函数本身的地址。当函数名作为参数传递时,函数名和&函数名的作用相同,都是传递函数的地址。例如:
void func() {
printf("Hello, World!");
}
void (*p)() = func; // p是指向func的函数指针
p(); // 调用func函数
5、结构体变量
普通类型的变量(int、char等)和结构体类型变量(struct、union、enum)与指针的关系相同,只是指向的数据类型不同。以下是结构体成员的几种访问方式:
struct Person {
char name[20];
int age;
};
struct Person p = {"Alice", 25};
struct Person *pp = &p;
printf("%s", p.name); // 直接访问
printf("%s", (*pp).name); // 通过指针访问
printf("%s", pp->name); // 通过指针访问(更简洁的方式)
6、数组名
数组名本质上是一个指针,指向数组的第一个元素。数组的使用需要注意以下几点:
- 数组名不能被赋值
- 数组名不能被改变
- 数组名可以作为函数参数传递
例如:
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p指向数组的第一个元素
printf("%d", *p); // 输出数组的第一个元素
printf("%d", arr[0]); // 同样输出数组的第一个元素
通过以上内容,我们可以清晰地理解变量、指针和地址之间的关系,这对于编写高效、安全的C语言程序至关重要。
热门推荐
撒钱拉动GDP!泰国开始向千万民众发放每人1万泰铢现金补助
人身权请求权与诉讼时效是如何规定的
钢结构桥梁桥面防水材料有哪些
青霉素V钾胶囊的作用与功效
团队组织如何起名字:十大关键因素全解析
山楂牛奶可以一起吃吗
二十种眼形大全图解,美丑各不相同!
别让职业规划拖后腿!留学选专业前必看的3个就业真相
同为乐坛“教父”的李宗盛和罗大佑作品对比,谁更胜一筹
什么叫有氧运动?包括有哪些
保存生板栗别直接放冰箱,教你一招,放一年还和新鲜的一样
高速光耦在电机控制领域的创新应用与前景展望
网站设计盲点解析:如何巧妙设计出吸引用户的视觉效果
高效记录并整理学习笔记的指南
孩子不尊重老师 家长应该如何向老师道歉
解析混同用工:法律界定与风险防范
孕妇主食吃什么好
咖啡的酸来自哪里?哪里的咖啡豆偏酸
《天回医简》正式整理出版 或为失传的扁鹊医书
齐善鸿讲《道德经》第六十五章: 聪明还是愚钝
百合炖什么可以润肺止咳
铝单板价格由哪些部分组成?工程预算怎么做?
基礎代謝率是什麼?肌肉量與基礎代謝率的關係
民族文化“活”了 各地旅游“火”了
对联的起源别称特点 对联的历史发展过程
小伤口藏着大隐患,严重可致命!儿童磕破头需警惕
这个大国夹缝中的"千乘之国",留下的是问候还是警告
厨房洗菜盆怎么选
多点电喷跟缸内直喷有啥区别,究竟哪种更胜一筹,哪种更省油?
论文参考文献的法律条款:知识产权保护与学术规范