C语言指针
指针章节,在C语言课程中,难中难,重中重。 课堂上老师的反复讲解,台下的学生越陷越乱,越来越纠结。 于是积极求学者,开始上B站大学,csdn苦修...
本文适用于是对上完课,对指针已经有一定了解的食客食用,目的是理清思路,验证疑惑…
-
一些必须先要有的概念
内存,通白的说,计算器在运行程序,不会直接在你的硬盘数据操作,而是在内存划分一片空间,进行运算结束后释放。
简单来理解,以下- 内存好比宿舍
- A B C D E F G H宿舍名等同于变量名
- 门牌号101 102 …相当于地址;

```c
int A;
int*p=&A;
```
-
为什么要引入指针
为什么要引入指针?
直接int a=666赋值,加减乘除,选择,循环,数组,结构体不一样能用?
因为初学者仅站在了第一层,发明指针的人已经站在了平流层…
指针的好处,暂时了解一下,可以总结:指针能让编程更高效,你现在要了解学习。- 直接操作内存
- 高效传递数据
- 实现动态内存管理
-
编程验证
-
验证1. p中到底存的是不是A的地址
代码://验证p中到底存的是不是A的地址 //( 注意:%p为标准化16位地址输出) printf("A的地址 %p\n", &A); printf("p中存储的数据 %p\n", p);输出结果:打印出A的地址,再打印出p(不带*号)的内容
(输出结果相同的地址)p就是存放A的地址(不带*号)

-
*验证2.*p是不是存着A的值
代码//验证2. *p是不是存的是A的值 A = 9966; //随机重新赋值 printf("*p=%d\n", *p);//打印*p验证输出结果:将A随机赋值一个数,打印看下*p的结果,结果相同

-
验证3. *p能不能修改A的值
代码//验证3. *p能不能修改A的值; A重新赋值*p会不会变化 *p = 10086; //*p随机赋值 printf("A=%d\n", A); //打印A printf("*p=%d\n", *p); //打印*p输出结果:结果很明显。打印*p和A结果一样。
结论对 *p操作等同于对A进行操作

总代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int A;
A = 10; //给A赋值,后续验证用指针修改
int* p = &A; //创建指针:整型指针变量p,并指向A的地址
//其中int*表示是整形类型指针,
// 就类比int A中的int,指的是一种数据类型
//验证1. p中到底存的是不是A的地址( 注意:%p为标准化16位地址输出)
//printf("A的地址 %p\n", &A);
//printf("p中存储的数据 %p\n", p);
//验证2. *p是不是存的是A的值
//A = 9966;
//printf("*p=%d\n", *p);
//验证3. *p能不能修改A的值; A重新赋值*p会不会变化
*p = 10086; //*p随机赋值
printf("A=%d\n", A); //打印A
printf("*p=%d\n", *p); //打印*p
return 0;
}
2218

被折叠的 条评论
为什么被折叠?



