天水做网站,深圳优定软件网站建设,全州建设完小网站,炒域名 网站1. 指针基本概念 1.地址:用来区分内存中不同字节的编号 2.指针:地址就是指针,指针就是地址 3.指针变量:存储指针的变量,有时去掉变量,称为指针
2. 指针运算符 1.: 1.获得一个变量在内存空间中的首地址 2.让表达式类型升级 2.*: 1.取…1. 指针基本概念 1.地址:用来区分内存中不同字节的编号 2.指针:地址就是指针,指针就是地址 3.指针变量:存储指针的变量,有时去掉变量,称为指针
2. 指针运算符 1.: 1.获得一个变量在内存空间中的首地址 2.让表达式类型升级 2.*: 1.取指针指向空间中的值(所取空间大小取决于指针类型) 2.将等号右边的值放入指针指向的空间 3.让表达式类型降级 二级指针在C语言中2个地方使用: 1.函数体内部想修改函数体外部指针变量值的时候,传指针变量的地址也就是二级指针 2.指针数组传参时,数组的数组名是指向数组第一个指针元素的指针,也就是二级指针
3. 指针的算数运算 指针偏移量为指向的数据类型大小个字节空间 - -- int *: 4 char *: 1 double *: 8 struct student*: 44 int **: 8
4. void指针 void a; void *p; void指针常用来存储内存地址 1.void类型指针不要使用* --相关操作 void *型指针和其余类型指针的转换 void * - char * 不需要做强制类型转换 double * int * char * - void * 需要类型转换(舍弃精度) double * int * 主要用在作为函数参数,或者函数返回值表示兼容所有类型指针 将内存地址为0x2000的空间赋值一个整形100 (*(int *)((void *)0x2000)) 100;
5. const指针 1.const int *p; 2.int const *p; 3.int *const p; 4.const int *const p; 5.int const *const p; 1和2是等价的 p可以改变,*p不可以改变 p可以指向任意空间,但无法利用p修改指针空间的值 3 p不能改变,*p可以改变 p只能指向初始化时的空间,无法指向其余空间,但可以利用指针修改指向空间的值 注意:必须初始化 数组的数组名 4和5是等价的 p不能改变, *p不能改变 注意:必须初始化
6. 指针数组和数组指针 指针数组: int *a[5]; 定义一个数组,数组有5个元素,每个元素8个字节,共40个字节,每个元素都是指向 整形变量的指针 char *pstr[5]; 存储字符串数组使用二维数组 操作字符串数组使用指针数组