1.指针的奥秘

文章详细介绍了C语言中的取地址运算符&,以及如何声明和使用指针。指针存储数据对象的首地址,通过指针可以访问和修改所指向的数据。文章还提到了指针类型如何表示数据对象的存储空间大小,并通过示例展示了指针在内存中的工作方式。
摘要由CSDN通过智能技术生成

1.取地址运算符&

        写在一个数据对象的左边,可以获取一个数据对象的 首地址 和所需
储空间大小。
        int n;
        类型 pn = & n; // 获取数据对象 n 的首地址和所需空间大小
2.指针的声明
                
int n;
int* pn = & n;
int* pn 声明了一个保存了  int 类型 首地址大小变量
变量 pn 存储了变量 n 的首地址与大小(即取地址运算符&吧n 的首地址和大小赋给了变量pn),我们通过pn就可以在内存中找到变量 n。
对于上面的代码:
pn 被称作 n 的指针,或者说 pn 指向 n

2.指针类型

指针类型怎样保存下面两种信息。
1. 数据对象的首地址。
2. 数据对象占用存储空间大小。
(1)指针类型的值就是目标数据对象的首地址
int n1;
int n2;

int *pn1 = &n1;
int *pn2 = &n2;

printf("pn1 = %u\n", pn1);
printf("pn2 = %u\n", pn2);

%u 尝试打印指针变量 pn1 pn2 ,看出它们确实为一些数值。 并且,数值之间均相差4。因此可以看出,n1n它们相邻排布,而这些数值就是n1n2的首地址。

(2)C 语言中通过不同的指针类型来标记目标数据对象的空间大小

3.如何使用指针

我们先再认识一个符号---取值运算符*
取值运算符是一个一元运算符,写在一个指针的左边,可以 根据指针中存储的首地址和空间大小找到目 标数据对象
int n = 123;
int* pn = &n;
printf("%u\n", pn); // 打印n的首地址
printf("%d\n", *pn); // 根据`pn`中的首地址与大小,找到的数据对象的值

 pn 变量内存储的值,即 n 的首地址。

*pn 表达式结果为,根据 pn 中的首地址与大小,找到的数据对象的值。即 n 的值。
所以通过指针,根据 pn 中的首地址与大小,可以找到的数据对象的值。
int n = 0;
int* pn = &n;
char c = 0;
char* pc = &c;

// 使用指针修改所指向数据对象
*pn = 123;
*pc = 'A';

printf("n = %d\n", n);
printf("c = %c\n", c);

// 使用指针访问所指向数据对象
printf("n = %d\n", *pn);
printf("c = %c\n", *pc);
​​​​​​​

除了通过指针访问所指向的数据对象,也可以通过指针修改所指向的数据对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘洲青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值