1.1不管是指针变量,还是函数指针。只要是指针,那它就一定装的是地址吗?指针就是地址,而且是首地址吗?
1.2为什么指针变量要保存首地址,而不是末地址呢?或为何不把两者都保存下来呢?
1.3不管是int类型 float类型 CString类声明的指针变量,指针占用的字节数都是一样的吗?
1.4如果指针占用的字节数一样,从首位地址到末尾地址,中间得有多少个这样的地址,这个个数的多少才取决于类或类型吗?指针能够在首地址到末地址之间移来移去的吗?指针移来移去的这有什么意义?
关于C++指针是否移动的问题
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
独角鲸网络安全实验室 2025-12-25 14:19关注1.1 指针是不是只装地址,而且是首地址?
指针变量说白了就是个“存地址的盒子”,里面只装内存地址,不是指针本身是地址哈;而且装的肯定是目标数据的首地址——不管是普通变量指针还是函数指针,都这样,因为程序访问数据都是从开头来的。
1.2 为啥只存首地址,不存末地址或都存?
简单说就是“够用又省事儿”:指针的类型(比如int、float)已经告诉编译器“单个数据占多少字节”,有首地址+类型,算末地址就是顺手的事儿;要是存两个地址,既多占内存,程序计算起来也绕,完全没必要。
1.3 不同类型的指针,占用字节数一样不?
一样的!比如int、float、CString*,在你电脑上(比如64位系统)都占8字节,32位系统就都占4字节。因为指针存的是内存“门牌号”,门牌号的长度只看系统位数,跟门里装的是int还是字符串没关系。
1.4 指针能在首末地址间移动不?移动有啥用?
能移,但不是瞎移:指针加减数字时,步长是“数字×指向类型的字节数”(比如int移1步是4字节,char移1步是1字节)。从首到末的地址个数,就是总字节数除以单个类型的字节数。
移动的意义超实用:遍历数组、操作MFC里的缓冲区/文件数据、链表遍历,靠指针移动又快又直接,比用下标方便多了——就是别移出圈儿(越界),一越界程序就容易崩。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报