C语言初阶 理解指针【1】

一. 指针概念

要想知道指针的基本概念,就要先知道变量在内存中是如何存储的。在存储时,内存会被分为一个个的内存单元,就好比酒店的房间一样。但是如果没有门牌号码,就很难去找到一个指定的房间,效率很低。所以要给每个房间编上门牌号。在计算机中,这种门牌号我们就能暂且理解为指针。

1.指针变量和地址

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 10;
return 0;
}
变量创建的本质其实是在内存中申请空间。例如首先我们创建了整型变量a,在内存中就申请了4个字节,其中每个字节都有自己的地址。

变量a的地址
这里就是a在其中的地址。内存中申请了四个字节来存放10,每个字节都有自己的地址。

之后如果我们要获取a的地址,我们就得使用取地址操作符&。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 10;
&a;
printf(“%p\n”,&a);
return 0;
}
这样就能获取到a的具体地址。

2.指针的解引用

我们将地址获取之后,为的是要进行后续的使用。
我们拿到了地址后,就可以通过地址去找到指针所指向的对象。所以我们会用到解引用操作符 *。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 10;
int* pa = &a;
*pa = 0;
return 0;
}

这里的int说明的是pa是一个指针变量,int是说指向的对象是整型变量。
后面
pa的操作就是通过pa中存放的a的地址来找到指向的对象,这样就就通过这个操作符将a改为了0

3.指针变量的大小

32位平台下地址是32个bit位,指针变量⼤⼩是4个字节
•64位平台下地址是64个bit位,指针变量⼤⼩是8个字节
•注意指针变量的⼤⼩和类型是⽆关的,只要指针类型的变量,在相同的平台下,⼤⼩都是相同的。

4.void*指针

指针类型中有⼀种特殊的类型是 void * 类型的,可以理解为⽆具体类型的指针(或者叫泛型指
针),这种类型的指针可以⽤来接受任意类型地址。但是也有局限性, void* 类型的指针不能直接进
⾏指针的±整数和解引⽤的运算。

viod*错误
可以看到,void*类型的指针可以接收不同类型的地址,但是不能直接进行指针运算。

那么void类型的指针到底有什么⽤呢?
⼀般 void
类型的指针是使⽤在函数参数的部分,⽤来接收不同类型数据的地址,这样的设计可以
实现泛型编程的效果。使得⼀个函数来处理多种类型的数据。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值