C++之指针
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++之指针,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1864字,纯文字阅读大概需要3分钟。
内容图文
![C++之指针](/upload/InfoBanner/zyjiaocheng/597/3634b3360eb8491e9eec0e13ca37ea20.jpg)
这里写目录标题
指针
指针的大小
取决于编译器位数,如果是X86是32,如果是X64是64;
- 没有赋值的指针成为野指针,所以指针所指向的变量一般需要进行初始化,不然的话,指针指向的位置有可能是系统地址的部分。Void *p =NULL;
- 取地址是在寄存器中,不占内存;所谓的地址实际是计算机总线,作为一个常量,不占内存;但是指针如果作为一个变量存在,是消耗内存的,比如*p = &num
空指针
void *p;是合法的,因为所有指针的存储大小是一样的,只是解析方式不一样。但是如下方式是不合理的。
Int num = 10;
Void p = #
Printf(“%d”,p);需进行强制类型转换?printf(“%d”,((int)p))//指针类型的意义决定解析方式
Int *p = NULL;//空指针,指向地址00000000
3. 指针打印:
printf(“%p”,&num);显示地址的位数
printf(“%x”,&num);只显示有效地址数
4. 取地址是取内存地址:&操作是在寄存器中执行的。
Int a;
&a;//获取内存地址
//&&a;///&a是在寄存器中进行操作,无法对寄存器进行取址操作
//&1;//寄存器的产物,非法操作
//&(a+1);在寄存器中进行操作,非法操作
//&get();//get返回值一般放置在寄存器的cache区或者编译器指定的内存区(禁止访问)
通过指针修改const
Const只能避免直接修改
Const int num =3;
(int)&num =10;//通过int *将不可修改的const int *转换为可修改的int *,且只能通过这种方式修改
指针运算
指针的运算和类型密切相关
Void *p;
p+1;//错误,因为未指定类型,不知道移动的大小
如果不在数组内部,指针的移动没有任何意义;
指针运算
指针的运算和类型密切相关
Void *p;
p+1;//错误,因为未指定类型,不知道移动的大小
如果不在数组内部,指针的移动没有任何意义;
数组指针
(存在数组退化为指针的情况)
int a[10] = [1,2,3,4,5,6,7,8,9,10];
printf(“%p,%p”,a, &a);//a表示a[0], 长度是int。&a表示数组首地址,长度是intlength,此处打印一样
Printf(“%d,%d”,a, a+1);//a+1相对a移动了int的长度
另外,数组没有副本机制,传递数组实际上会退化为指针。
Printf(“%d,%d”,&a, &a+1);//输出相差40个字节,移动了一个数组的长度
Printf(“%d,%d”,sizeof(a), sizeof(a+1));//输出40,4;此处a等价于 int a;(&a);
内容总结
以上是互联网集市为您收集整理的C++之指针全部内容,希望文章能够帮你解决C++之指针所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。