C语言指针入门,图解+实例

本文详细介绍了C语言中的指针,包括指针的概念、内存关系、指针创建、指针类型、野指针的成因、指针运算(包括指针加减整数、指针关系运算)以及指针与数组、二级指针和指针数组的关系。通过实例解析了指针在内存管理中的作用和操作方式,帮助读者深入理解C语言指针的本质和使用技巧。
摘要由CSDN通过智能技术生成

目录

1.指针是什么

那么地址,内存,指针又有怎样的关系?

如何去创建指针变量,并且存放地址呢?

内存空间有多大?

2.指针类型

那么不同类型的指针有什么作用呢?

3.野指针 

成因 :

4.指针运算

4.1指针±整数

4.1指针-指针

4.3指针的关系运算

5.指针和数组

6.二级指针

 7.指针数组


 

1.指针是什么

指针是内存中一个最小的单元编号,也就是地址

通常我们口中说的指针其实是指针变量:变量中存放着地址

那么地址,内存,指针又有怎样的关系?

为了对内存更方便的管理使用,我们把内存划分为一个一个小格子

一个内存单元是1个字节

为了很好的定位到内存单元,我们给每个单元一个编号,这个编号也就是地址

指针变量就是存放我们需要的地址,方便我们需要时直接使用

如何去创建指针变量,并且存放地址呢?

int a=0;

int* p=&a;//此处*代表创建的是指针变量,给p赋值的是a的地址

//int* 中int 告诉我们指针变量p指向的对象是int类型

下面我们以这段简单代码举例

int main(){
int a = 10;
int* p = &a;
return 0;
}

 这其中原理可以用图表示

注:指针变量p存储的是a变量的首地址

因为我们只需要知道a变量首地址,依次向后+1,就可以知道a变量所有的地址

总结:地址标识内存,指针存放地址,而创建指针又需要新的内存空间

内存空间有多大?

这跟电脑是32位机器还是64位机器有关,对于32位机器,它有32根地址线,每根地址线在寻址时产生高电压和低电压对应的是1和0,32根就是2^32Byte=2^22KB=2^12MB=4GB(内存空间)

 在2^32种情况中,每种情况是32个0,1组成,是32个bit位,4个字节,而一个16进制数字占0.5个字节,所以地址是8个16进制数字组成,如

这样的地址可以标识一个1字节内存空间,2^32种地址标识2^32字节也就是4GB空间。

注:这里32位机器地址占4字节,但它代表的内存空间占1字节

总结:

  • 指针用来存放地址,地址唯一标识一块内存空间
  • 指针大小在32位平台是4字节,在64位平台是8字节

2.指针类型

不同类型的指针大小是否相同?

#include<stdio.h>
int main() {
	int a = 0;
	int* pa = &a;

	char b = 'a';
    char* pb = &b;
	printf("%d\n", sizeof(pa));
	printf("%d", sizeof(pb));
	return 0;
}

结果都是4,我们发现不同类型的指针他们的大小是一样的依然是32位平台是4字节,在64位平台是

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橘子13

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

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

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

打赏作者

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

抵扣说明:

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

余额充值