首页 > 代码库 > C++学习笔记(五):指针
C++学习笔记(五):指针
声明指针:
1 //指针声明 * 号左右的空格是可选的,下面的定义都是正确的2 int *pointer1;3 int* pointer2;4 int*pointer3;5 int * pointer4;6 //注意: pointer5 是指针而 pointer6 不是7 int *pointer5, pointer6;8 //pointer7 和 pointer8 都是指针9 int *pointer7, *pointer8;
指针的类型和指针所指向的类型:
1 //指针的类型是int*,表示为int对象的指针2 //指针所指向的类型是int,表示该指针指向int对象3 int *pointer1;
指针的值:
指针表示指向对象位于内存中的地址,对于32位的系统来说就是一个无符号的32位数字(最多表示4GB内存),64位系统就是一个无符号的64位数字;
取地址和取值:
取一个对象的地址使用&符号,取一个指针指向的对象的值使用*符号;
1 int num = 100;2 int *p = #3 p = 101;//错误, 这是直接改变指针的指向,指向内存地址1014 *p = 101;//正确, 修改了num的值
空指针:
表示这个指针没有指向一块有意义的内存,对空指针应用delete是安全的。
1 //没有赋值的指针2 int *p;3 //赋值为NULL或0的指针4 int *p = NULL;5 int *p = 0;
指针的算术运算:
指针的加减法会以sizeof(指针指向的类型)来处理,比如:
1 int num = 100;2 int *p = #3 p++;//指针的地址指向+4之后的位置4 ptr += 5;//指针的地址指向+20之后的位置
指向指针的指针:
指针同样可以指向另一个指针,
1 int **ptr;//指向一个int类型指针的指针
指针和数组:
数组的数组名其实可以看作一个指针,
1 int array[10]={0,1,2,3,4,5,6,7,8,9},value;2 value=http://www.mamicode.com/array[0];//也可写成:value=http://www.mamicode.com/*array;3 value=http://www.mamicode.com/array[3];//也可写成:value=http://www.mamicode.com/*(array+3);4 value=http://www.mamicode.com/array[4];//也可写成:value=http://www.mamicode.com/*(array+4);
在表达式sizeof(array)中,数组名array代表数组本身,故这时sizeof函数测出的是整个数组的大小。
在表达式*array中,array扮演的是指针,因此这个表达式的结果就是数组第0号单元的值。sizeof(*array)测出的是数组单元的大小。
在很多情况下,可以相同的方式使用指针名和数组名。对于它们,可以使用数组方括号表示法,也可以使用解除引用运算符(*)。在多数表达式中,它们都表示地址。区别之一是,可以修改指针的值,而数
组名是常量。
成员调用:
结构变量.成员名
(*结构指针变量).成员名
结构指针变量->成员名
C++学习笔记(五):指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。