C语言的内存和指针(2)指针 修饰符 运算符 到多维指针

it2025-06-08  22

一 修饰符

const

其实在C中的const 不同于C++ 中的 const 完全只读 C中const 修饰过对象是可以从内存修改的 说说这个 没啥大用但是得知道!

指向可以变但是指向的内容不能变的const 修饰
const char *p; char const *p;

前面我们说过指针是一个指向内存的盒子,那么这种修饰意思就是 盒子指向的内存地址里面的内容是只读的 就像我们平时用的 char *p = “hello” 这个p 就是只读的 所以我们直接把他当字符串理解就行了(一般也没其他作用)

指向内容可以改变但是指向不能变
char *const p; char *p const;

这种常用于硬件的数据的读取! 盒子不能随意指向其他内存块 但是内存块内保存的内容可以变

volatile 一般防止优化用的 我不搞嵌入式不太懂

二 运算符

用++说明其他+1 – +N 什么吧

前面我们说了 指针应该怎么看 比如 char *p 代表的就是一个8(64位系统)字节的盒子 盒子有盒子的地址 盒子里面的盒子指向的地址 盒子的存取方式(存取大小) 由后面的类型决定 比如这个char 就是存取大小每次为1字节 那么很简单 p++ 每次也就是增加一个字节的内存访问 如果是int 那就是4个字节 就是这样简单

说一下[]

[] 在指针中很常见 也叫标签 使用更加方便于*p++ 直接p[1] 就可以了 C语言会默认将指针指向的位置设置成p[0]。 注意如下这点就可以了

p[n] 是直接取值 直接去对应地址里面的值 对应于 *p+n 而不是 p+n

多维指针

已经对指针很好的总结了 那么多维指针就是 指向盒子的盒子 盒子和前面说的一维指针没有什么区别 唯一区别就是 多维指针指向的是一个内存中一个指针盒子 而一维指针指向的是内存中对应定义的量。 不画图了 上面说的放两个函数会清楚很多

最新回复(0)