首页 / C++ / c++关于指针的理解
c++关于指针的理解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++关于指针的理解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2583字,纯文字阅读大概需要4分钟。
内容图文
![c++关于指针的理解](/upload/InfoBanner/zyjiaocheng/717/a2a53b25dd134a0491c3e128539d0222.jpg)
简介:
指针可以简化c++编程,在一些任务中没有指针是无法完成的(动态内存分配)
使用 & 可以获得变量在内存中的地址:
eg:
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044457955.jpg)
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044458106.jpg)
1 #include <iostream> 2 3 using namespace std; 4 5 int main () 6 { 7 int var1; 8 char var2[10]; 9 10 cout << "var1 变量的地址: "; 11 cout << &var1 << endl; 12 13 cout << "var2 变量的地址: "; 14 cout << &var2 << endl; 15 16 return 0; 17 }View Code
定义:
指针:是一个变量,它的值是另一个变量的地址。在使用前要对它进行声明和赋值。
空指针:
NULL:为空指针,如果没有确切的地址可以赋值,为指针赋值一个null是一个好的习惯。
eg:
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044457955.jpg)
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044458106.jpg)
1 #include <iostream> 2 3 using namespace std; 4 5 int main () 6 { 7 int *ptr = NULL; 8 9 cout << "ptr 的值是 " << ptr ; 10 11 return 0; 12 }View Code
执行结果是:ptr 的值是 0
大多数操作系统中程序是不允许访问地址为0的内存。该内存视为操作系统保留的,他可以表明指针不指向一个可以访问的内存,所以如果指针包含空值就假定它不指向任何东西。
对于空指针的的检查:
if (ptr) 或if (!ptr) 未初始化的变量存在垃圾直,会使程序的调试难以进行。
指针的运算:
指针可以进行 ++、 +、 -、 -- 运算。
如果ptr是指向1000的整形指针,ptr++是指向1004位置的指针。每增加一次往后移动4个字节,如果是字符型指针,ptr++指向1001,往后移动一个字节。
通常使用++、 -- 是在使用指针代替数组的时候使用。
eg:
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044457955.jpg)
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044458106.jpg)
1 #include <iostream> 2 3 using namespace std; 4 const int MAX = 3; 5 6 int main () 7 { 8 int var[MAX] = {10, 100, 200}; 9 int *ptr; 10 11 // 指针中的数组地址 12 ptr = var; 13 for (int i = 0; i < MAX; i++) 14 { 15 cout << "Address of var[" << i << "] = "; 16 cout << ptr << endl; 17 18 cout << "Value of var[" << i << "] = "; 19 cout << *ptr << endl; 20 21 // 移动到下一个位置 22 ptr++; 23 } 24 return 0; 25 }View Code
编译结果:
Address of var[0] = 0xbfa088b0
Value of var[0] = 10
Address of var[1] = 0xbfa088b4
Value of var[1] = 100
Address of var[2] = 0xbfa088b8
Value of var[2] = 200
指针的比较:
指针可以使用关系运算符进行比较:== 、<、>
eg:
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044457955.jpg)
![c++关于指针的理解 - 文章图片](/upload/getfiles/0001/2021/5/3/20210503044458106.jpg)
1 #include <iostream> 2 3 using namespace std; 4 const int MAX = 3; 5 6 int main () 7 { 8 int var[MAX] = {10, 100, 200}; 9 int *ptr; 10 11 // 指针中第一个元素的地址 12 ptr = var; 13 int i = 0; 14 while ( ptr <= &var[MAX - 1] ) 15 { 16 cout << "Address of var[" << i << "] = "; 17 cout << ptr << endl; 18 19 cout << "Value of var[" << i << "] = "; 20 cout << *ptr << endl; 21 22 // 指向上一个位置 23 ptr++; 24 i++; 25 } 26 return 0; 27 }View Code
运行结果:
Address of var[0] = 0xbfce42d0 Value of var[0] = 10 Address of var[1] = 0xbfce42d4 Value of var[1] = 100 Address of var[2] = 0xbfce42d8 Value of var[2] = 200
内容总结
以上是互联网集市为您收集整理的c++关于指针的理解全部内容,希望文章能够帮你解决c++关于指针的理解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。