变量,指针,地址之间的关系,以及注意事项
创作时间:
作者:
@小白创作中心
变量,指针,地址之间的关系,以及注意事项
引用
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语言程序至关重要。
热门推荐
被犬只吓到奔跑受伤,狗主人需要担责吗?
穷人和富人的财富观念差异与行为模式差异研究
小孩摇头是什么原因
蛋炒饭不粘锅的技巧
如何办理大连失业金领取手续?——2025年最新指南
胃窦炎患者一日三餐食谱及日常护理指南
传统婚嫁习俗之回门:渊源与礼俗
官方:斯托克华裔名宿苏卫清入选英格兰足球名人堂
同仁堂龙胆泻肝丸:功效、用法与注意事项全解析
如何找到满意的居住公寓?这样的公寓有哪些特点?
从天才少年到发明家:李宏涛的传奇人生
果然财经|网购手机也能享国补,注意这些细则轻松“薅羊毛”
SQL窗口函数-RANK() 函数的解释和用法
A-Level学习宝典:经济、历史、心理学、商业科目推荐读物
尿液中泡沫多,暗示了什么问题?你的肾脏是否健康?有3点判断标准!
跨境美妆采购渠道解析
中秋节特色美食的食材来源及烹饪技巧分享
西门子PLC入门必备知识:S7-200SMART PLC详解
百合银耳汤的功效与作用
百合银耳汤的功效与作用
彝族年:传承与繁荣的文化盛宴
楚雄彝族自治州举办2024年彝族年系列活动:民俗文化展魅力 民族团结一家亲
中东主权基金在华“招商引资”
浅谈VPP与DPDK技术以及产业界应用实例
固态硬盘的擦写次数只有千次,用完以后会坏吗?
不锈钢项目经理如何考证
肿瘤微环境中的免疫抑制细胞因子:IL-10、TGF-β、IL-4和IL-35
Windows系统引导重建,Windows引导损坏修复
如何基于"大概念"进行"跨学科"教研?(附案例)
洋蔥、大蒜、香菇是免疫力之王!這樣吃快速激活免疫細胞、縮短生病時程