变量,指针,地址之间的关系,以及注意事项
创作时间:
作者:
@小白创作中心
变量,指针,地址之间的关系,以及注意事项
引用
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语言程序至关重要。
热门推荐
广东最美徒步线路大盘点:深圳东西冲&英西峰林
万绿湖徒步攻略:秋冬季节的粉色浪漫
英西峰林:广东徒步新宠!
孙悟空故乡花果山:你不知道的历史传说
花果山:一座生态与文化交相辉映的“花果山”
新《射雕》选角争议:颜值与演技的博弈
“红绿”融合,朝气蓬勃:新时代遵义文旅发展新貌
腹腔镜胆囊术后护理全攻略
揭秘机场黑科技:无杆式牵引车如何拖动巨无霸?
秋冬打卡宜昌必玩景点:三峡人家&三峡大瀑布
屈原故里:宜昌的文化瑰宝
探秘重庆山城巷:穿越时空的文化之旅
经常咬到舌头真的是馋肉吗?错!可能是疾病信号!
江西7日游:滕王阁、庐山、婺源,一个都不能少!
南昌海洋公园:寒假亲子游的海洋乐园
秋冬徒步打卡:南昌梅岭国家森林公园
连云港的海州湾秋季风光,特别迷人
CICERO AI背叛人类信任,真相大白!
Apollo Research揭秘:AI撒谎成瘾?
横店“最忙”取景地衡阳宗将拆:1亿搭建费或成绝响
鸡蛋消费进入旺季 蛋鸡养殖效益处于高水平 养殖户积极扩栏
租赁合同如何支付租金
航母舰载机牵引车:百万美元的幕后英雄
腹腔镜胆囊切除术需要住院多长时间?术后恢复需要多久?
揭秘:道格拉斯牵引车如何拉动波音747?
基于晚期BTC一线治疗不同方案比较的Meta分析
胆结石的三级预防:从形成到复发的全面防护指南
做阑尾手术选微创还是选开腹?
Query 改写综述:提升信息检索效率与准确性的关键技术
出新、出圈、出海,北京台春晚如何再创辉煌?