变量,指针,地址之间的关系,以及注意事项
创作时间:
作者:
@小白创作中心
变量,指针,地址之间的关系,以及注意事项
引用
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语言程序至关重要。
热门推荐
漫谈古礼:古人智慧养生之道
AI医疗应用助力普通百姓健康管理:智能化时代的到来
迷你主机必备:优质12V电源适配器选购指南
漏尿女性应该如何治疗
蒸汽机车的兴衰史:从辉煌到淘汰的轨迹 荣耀与代价!
西兰花的冷冻保存方法(如何冷冻保存新鲜的西兰花)
楼家村:千年古建诉说繁华往事
灰指甲患者的心理调适:从困扰到康复的完整指南
中科院推荐:低温等离子体治灰指甲新技术
公共浴室内如何避免灰指甲传染?
地质工程勘查:钻探技术的新突破
给蝴蝶兰擦叶子,不花一分钱,就能让叶片焕然一新,油亮似翡翠
绿植之美:家庭绿植布置的技巧与心得全分享
东岳庙的神秘七十二司:你敢挑战吗?
苏丹卡布斯大清真寺:阿曼必打卡圣地
马斯喀特:阿曼的心脏地带
阿曼苏丹国版图变迁大揭秘
2024香港急需人才行业全解析:薪资水平与求职途径指南
如何通过香港专才计划申请移居香港的技能和流程详解
香港人均薪资曝光:人与人的差距,从什么时候开始拉开的?
过期牛奶发酵后竟能变身网红饮品?这样做既安全又健康!
喝过期牛奶真的安全吗?伊利和特仑苏告诉你真相
过期牛奶别扔!养花护鞋两不误
韶关小众景点推荐:仙门奇峡秋日打卡
韶关古村落探秘:黄玉美的田野笔记
家庭文化的变迁与社会结构的紧密联系
皓月公主:从奇猫国到青青草原的守护之旅
揭秘皓月公主:喜羊羊新宠儿的角色魅力
054A型护卫舰,建造数量超50艘,为何性价比如此高?
春节家宴必学:炸萝卜丸子做法分享