变量,指针,地址之间的关系,以及注意事项
创作时间:
作者:
@小白创作中心
变量,指针,地址之间的关系,以及注意事项
引用
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语言程序至关重要。
热门推荐
鬼王石刻:丰都县必打卡的文化瑰宝
探秘丰都鬼城:千年古城的神秘传说与文化魅力
从倾听到理解:5个技巧提升你的共情表达能力
谷爱凌激浪大赛再创佳绩,15小时连夺两金!
揭秘谷爱凌的科学训练秘籍:从体能到心理的全方位解析
谷爱凌泳装照风波背后:情感纠葛与公众期待的碰撞
猫头鹰不是鹰?白天很怂,夜战无敌,巢穴被袭后连杀 4 只金雕复仇
优化企业DNS解析:转发技术的应用场景与配置要点
网站加速与安全防护:DNS缓存、CDN、负载均衡实践
猫头鹰吉祥物:神秘与智慧的象征
战国到明清:中国古代甘蔗榨汁技术的革新之路
MATLAB分析图像的离散余弦变换(DCT)
糖尿病患者尿多怎么办?这些方法帮你有效应对
春日云和梯田摄影指南:晨雾日出与实用技巧全解析
雪覆云和梯田如仙境,正值免门票最佳观赏期
云和梯田摄影指南:700层梯田的最佳拍摄时间与机位
86版《西游记》:角色删减背后的艺术考量
炙甘草汤真的能降血糖?揭秘中医智慧
中药食疗方,让你稳住血糖不再慌
西藏地震已致近5万群众转移安置,224个安置点全面通电
5年内最强地震袭击西藏定日,尼泊尔印度均有震感
6.8级地震袭击西藏定日,多技术手段助力地震科研
从性能到应用:东安、五菱、江陵465发动机全解析
梁朝伟刘嘉玲丁克生活揭秘:娱乐圈的另类选择
梁朝伟刘嘉玲:丁克生活的16年
梁朝伟刘嘉玲日本隐居,揭秘丁克生活真谛
贵州沿河:2.92万亩烤烟全面移栽,技术指导助力农户增收
营养师解析:水果茶的四大好处与饮用注意事项
2岁和8岁:离婚子女抚养权判定的关键年龄节点
电饭锅盐焗鸡:懒人也能享受的健康美味