kwrl.net
当前位置:首页 >> 在C中,对一个指针加1 的结果是对该指针增加1个存... >>

在C中,对一个指针加1 的结果是对该指针增加1个存...

这个就要看你定义 的存储单元是什么类型的了,例如定义的存储单元类型是int整型的,而整型数据类型占2个byte(字节),那么“使指针移动1个位置”意味着移动2个字节,“使指针加1”意味着使地址值加2个字节

可以相加啊,指针加整数表示指针移动,相应类型所占内存单位大小 乘 整数值 譬如 int num = 9; int* p = # 假设, p 现在存有地址 0x1002,int类型为2字节 则 p + num 就等于 0x1002+2*9 = 0x1020

可以相加啊,指针加整数表示指针移动,相应类型所占内存单位大小 乘 整数值 譬如 int num = 9; int* p = # 假设, p 现在存有地址 0x1002,int类型为2字节 则 p + num 就等于 0x1002+2*9 = 0x1020

*(p+1)表示具体的数值,指针p所指向的内存地址单元的下一个内存地址单元中的值; p+1 表示地址,指针p所指向的内存地址的下一个内存地址。 可以通过下面的实例来理解*(p+1)与p+1之间的区别: int *p; // 定义一个int类型的指针pint a[3]={1,2,3}...

一、指针变量的初始化问题  指针变量同普通变量一样,使用之前不仅要定义说明,而且必须进行初始化,指针的 初始值必须是一个地址,决不允许赋予任何其他数据, 通常是一个数据的地址或地址 变量或空指针。 1、指针变量...

#include int main() { int a; // 定义一个变量 int* ptr; // 定义一个指针 int& aa = a; // 建立变量a的引用 a = 10; // 变量a初始化为10 ptr = &a; // ptr指向了a printf("a的值为:%d\n", a); *ptr = 20; // 通过指针修改变量a的值 printf("...

主要是看你定义指针的类型,比如你定义int *p=NULL; 那么int占4个字节。指向int的指针+1,该指针所指的内存地址要+4;如果你是定义 char *p=NULL; 那么char占1个字节。指向char的指针+1,该指针所指的内存地址只要+1

内存都是用地址编好了每一”格“的,一个地址对应一“格”,定义一个指针时,系统为指针随机赋一个内存大小范围内的地址,所以该指针肯定指向内存的某一“格”。如果没对指针进行赋值便使用(如p->next之类的),一般情况下在windows中运行时会提示非...

这跟指针的数据类型有关。会移动和指针所指数据类型所占用空间相同的字节。 如char*型向后移动1个字节,int*型向后移动4个字节。

指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节。

网站首页 | 网站地图
All rights reserved Powered by www.kwrl.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com