c语言基础--指针初步讲解(入门版)


前言

指针其实没有大家想象的那么难

指针是学习c语言或者c++无法逃避的一个坎,很多同学就是在指针这一part道心崩溃最终放弃的.今天我将尽我所能把指针讲得浅显易懂.


一、指针是什么?

众所周知,内存是我们电脑运行的重要一环.我们现在的内存动不动就要16G或者32G.所以,为了更好地管理我们的内存单元,设计师将电脑划分为一个个内存单元–字节,并给他们进行编号.这些字节的编号就是这些内存单元的地址,也就是指针.存放这些编号的叫做指针变量.,
这就像是小区里为了更好地管理业主的房子,给我们分配了一个个门牌号.例如门牌号是104.我可以根据这个门牌号在一个小区里精准定位到你家.这个门牌号就是指针.
如果我用变量来存储这个门牌号,那么这个变量就叫做指针变量.

二、使用步骤

1.引入库

代码如下(示例):

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int a = 10;
	//&是取地址操作符,&a就是把a的地址提取出来
	int* pa = &a; //*pa表示pa是指针变量,
	//int表示*pa所指向的变量a的数据类型为整型
	*pa = 20;//这个的*pa等价于a
	printf("%d\n", a);
	return 0;
}

int* pa = &a中 pa表示pa是指针变量, int表示pa所指向的变量a的数据类型为整型
pa = 20中pa等价于a,相当于通过pa存放的地址去找到a,从而修改a的数据.

注意事项

1.int * pa 中存放的内容只能是地址
2.我们口头语中的指针,通常指的是指针变量

2.指针变量的大小跟类型没有关系

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	printf("%d\n", sizeof(int*));
	printf("%d\n", sizeof(char*));
	printf("%d\n", sizeof(double*));
	printf("%d\n", sizeof(long long*));
	return 0;
}

输出结果
在这里插入图片描述

不难看出,指针变量的大小跟指针变量的类型没有关系

原因

我们的电脑是分32位和64位,上面代码的运行环境是x64,处于64位.所以指针变量的大小是64个bit,也就是8个字节
在这里插入图片描述
x86是32位的,所以指针变量的大小是32比特,也就是4个字节.
通俗一点来说,64位可以表示为64根并联的地址线,每根地址线的通电与否用来表示0或者1.这样组合而成的结果有2的64次方可能.每一种可能都是我们存储单元–字节的编号,也就是地址–指针.存储这些地址的就需要64个比特位 = 8个字节
这也就解释了在32位电脑的环境下,我们内存最高才有4G.
字节(B)–KB–MB–GB中间的转换是2的10次方.
2的32次方(B) = 2的22次方(KB )= 2的12次方(MB) = 2的2次方(GB) = 4GB
指针变量的大小取决于地址的大小

总结

这里对文章进行总结:
1.内存会划分以字节为单位的内存单元;
2.每个内存单元都会有编号 = 地址 = 指针;
3.地址要存储起来,给一个变量,就叫做指针变量.int * pa = &a;
4.pa中存放a的地址,通过pa的地址找到a–*pa.*pa等价于a

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海的宇宙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值