赞
踩
目录
3、使用指针:解引用(指针前加一个*号),找到指针指向的内存的数据
5、空指针:指针变量指向内存中编号为0的空间,用于初始化指针变量
- int a = 10;
- int * p;
- p = &a;
- //指针p记录a的地址
int *、float *、double *、char* :在32位(x86)操作系统下占4个字节空间(不管什么数据类型),在64位下占8个
注意:空指针指向的内存是不可以访问的
- //初始化指针变量
- int * p = NULL;
- //NULL在程序中代表0,即空指针内存编号
- //0~255内存编号是系统占用的,不可以访问
-
- //空指针不可以进行访问,程序会崩(写入访问权限冲突)
- *p = 100;
- int * p = (int *)0x1100;
- //随便拿一个指针操纵一块内存
const修饰指针 -- 常量指针
const修饰常量 -- 指针常量
const即修饰指针,又修饰常量
- int a = 10; //内存0x0011
- int b = 10; //内存0x0022
- int * p = &a; //内存0x0011
** 常量指针:指针指向可以修改,但是指针指向的值不可以改
- //常量指针
- const int * p = &a;
- //错误
- *p = 20;
- //正确
- p = &b;
** 指针常量:指针指向不可以修改,但是指针指向的值可以改
- //指针常量(const修饰常量p)
- int * const p = &a;
-
- //正确
- *p = 20;
- //错误
- p = &b;
const即修饰指针,又修饰常量:指针的指向和指针指向的值都不可以修改
const int * const p = &a;
#记忆技巧:const紧跟什么就是限制什么,紧跟*就是限制解引用不能修改值,紧跟p就是限制指针不能修改指向
- int arr[10] = {1,2,3,4,5,6,7,8,9,10};
- int * p = arr; //arr是数组首地址
-
- for(int i = 0; i < 10; i++)
- {
- cout << *p << endl;
- p++; //加一次往后偏移4个字节,因为创建的指针是int类型
- }
- void swap(int *p1,int * p2)
- {
- int temp = *p1;
- *p1 = *p2;
- *p2 = temp;
- }
-
- int main()
- {
- int a = 10;
- int b = 20;
- //地址传递可以修饰实参
- swap(&a,&b);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。