初始指针包括指针数组和二级指针(跑路人笔记)(1)

简介: 初始指针包括指针数组和二级指针(跑路人笔记)

前言


大家好啊!又是我这个快乐跑路人,扫雷的展开没有多少东西我就把之前的扫雷更新了一下把展开放到哪里了,今天我们来弄一下指针(指针作为c语言中最重要的一部分自然不能一下子弄完,所以我分为初始指针和详解指针。)


——————————————————————————————————————————————————————

(快乐分割线(^ ▽ ^))


内存略述

讲指针之前还是要先略讲一下内存.

首先为了方便查找我们把内存分为一个个的内存单元.

内存地址又被编上一个个号(一般以十六进制呈现).

内存编号就被称为地址一个地址占一个字节.

内存单元的编号由地址线(物理的电线)的通电产生.


一、啥是指针?

1.指针是内存单元中最小的编号,也就是地址。

2.平时口语说的指针一般是指针变量是用来存放地址的变量。


我们通过一个十分简单的代码来观察一下内存的原理:


内存

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

image.png


最上面的地址是a的地址我们可以通过&a来得到作为int 类型的a变量他的地址却知识所占四个内存单元的开头的一个所以我们就称每个变量开头的内存单元为地址

p得到的也只是开头的内存单位

p作为指针在32位计算机的大小为4字节

在64位计算机中8个字节的大小

因为

32位机器上每个地址是32个0或1也就是32个比特位一个字节是8个比特位所以我们要储存32个比特位就需要4个字节大小

同理

64位机器就需要8个字节大小的指针来存放地址。


二、指针和指针类型(指针类型的重要性)

2-1指针加减整数

此例子只是为了证明不同类型的指针有着不同的意义。

在32位机器下所有的指针都有这相同的4个字节大小(64位机器则有8个字节大小)

但是他们所控制的字节大小不同

如图:



image.png


我们用char类型的指针来控制int类型的变量就没有按照我们心里所想的那样来执行本应该打印2的最后却打印了怪怪的数字而我们用相同类型的指针来控制就没发生上述怪事。我们来用内存来解释此事。

上图:


image.png


开始时我们将a设成了44332211



image.png


经历了char类型指针的操作我们发现我内存里的a内容就只有一个字节的内容发生了改变可是我们int变量有四个字节的空间啊,所以就发生产生了那个奇奇怪怪?的数字。而我们使用int类型的指针进行操作又会发生什么呢?

上图!!!


image.png


诶!这一下我们四个字节的内容都发生了改变,这样我们的int a就可以被安排明白了


image.png


而在不同类型指针加整数的时候地址的变化也是不同的

所以指针类型相对应十分的重要。


从上面的例子可以看出指针类型对应的必要性。

小结: 指针类型决定了在解引用的时候能一次访问几个字节的能力


相关文章
|
8天前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
8天前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
8天前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
14天前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
14 1
|
17天前
|
存储
一篇文章了解区分指针数组,数组指针,函数指针,链表。
一篇文章了解区分指针数组,数组指针,函数指针,链表。
16 0
|
23天前
|
编译器 C语言
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
|
3月前
|
搜索推荐 C语言
指针与数组
指针与数组
55 9
|
3月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
3月前
|
存储 程序员 C语言
指针的高级应用:指针数组、数组指针、函数指针等。
指针的高级应用:指针数组、数组指针、函数指针等。
97 0
|
4月前
|
运维
开发与运维数组问题之指针的加减法意义如何解决
开发与运维数组问题之指针的加减法意义如何解决
41 7