c & c++中的“指针、指针变量、指针变量的类型”
来源:互联网 发布:鼎信诺审计软件win10 编辑:程序博客网 时间:2024/05/21 08:01
1.1 c & c++中的“指针、指针变量、指针变量的类型”
1.1.1 指针:
1.是变量的地址
2.指针的长度和计算机的字长相关,例如:在32位计算机中,指针的长度是32位,即4字节;在64位计算机中,指针的长度是64位,即8字节。
1.1.2 指针变量
就是c语言中一个普通变量,指针变量所保存的值,是某个变量的地址。例如,int a; int *pa = &a; 这里的指针变量pa 的值是变量 a的地址。
1.1.3 指针变量的类型
例如,int * pi , char *pc , long *pl ,unsigned short *ps 等,这些都是指针变量,他们的类型分别是 int , char , long , unsigned short 。
下来讨论一下,指针变量类型的特性:
1、指针变量是用来保存变量地址的,指针变量的类型和他所表示的变量的类型没有直接关系,即,某一类型的指针变量可以保存任意类型变量的地址。
例一:
char is[4] = {0x11,0x22,0x33,0x44};
int *p = (int *) is;
int a = 10;
char *pa = &a;
2、当对指针变量进行“提领(dereference)运算,也就是*p运算”的时候,所操作的内存字节大小就是sizeof ( 指针变量类型 )
例二:
char c = ‘c’;
int *p = &c;
int x = *p;
例子中的 *p ,将会一次性访问4字节的内存,也就是从变量c的地址开始,访问4个字节。
注意,这里只是举例,这段代码会引起严重的内存错误,许多内存问题也就是这么来的。慎重!!!
3、对指针变量进行算术运算的时候,指针变量的值的变化和指针变量的类型相关
例三:
char * pc =0x11223344;
pc++;// 此时pc的值就是0x1122334455,pc的值增加了1
int *pi =0x11223344;
pi++; // 此时pi的值是0x11223348 ,pi的值增加了4 = 1 *sizeof(int)
int *pi1 =0x11223344;
pi1 = pi1 + 3;//此时pi1的值是0x112250, pi1的值增加了12 = 3 * sizeof(int)
int *px1 =0x11223344;
int *px2 =0x11223320;
ptrdiff_t diff =px1 – px2;
diff的值就是(0x11223344 - 0x11223320)/ sizeof(int) = 9;
- c & c++中的“指针、指针变量、指针变量的类型”
- C中的指针变量
- C语言中的指针变量
- 指针变量和指针变量的地址(c/c++)
- C语言指针变量
- C语言指针变量
- C#变量类型(1):指针
- 【Object-C】指针变量强制类型转换
- c 指针定义和引用 变量类型
- 4、C语言中 指向指针变量的指针变量
- 学习笔记(objective-c)-判断指针变量的实际类型
- C指针变量,函数指针备忘
- C语言指针-----指针与变量
- 变量 指针 指针的指针
- C语言有关指针的变量声明中的几个易错点
- C语言有关指针的变量声明中的几个易错点
- C语言指针的和C++中的变量别名
- 对c语言中的字符指针变量的解释
- DS-5笔记(Remote System Explorer-远程系统资源管理器)
- Linux环境进程间通信
- java中的几个关键字
- ios学习笔记之四种数据持久化方法
- DS-5笔记(Gnometris)
- c & c++中的“指针、指针变量、指针变量的类型”
- ARM DS-5初体检
- Sql函数
- 加入一个多播组(最简单的情况)
- 学习笔记之业务逻辑
- 表单验证 正则表达式实例 Email验证 电话号码验证 中文汉字验证
- 通过产品ID得到collection!!!
- linux c socket 读取网页
- C/S和B/S对比