服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 学习C++指针声明和指针相关概念

学习C++指针声明和指针相关概念

2021-06-11 01:23Python之王小sen C/C++

C++ 指针学习起来有点难,但是很重要。一些 C++ 程序使用指针更容易执行,另外其他 C++ 程序,例如动态内存分配,没有指针就无法执行。

学习C++指针声明和指针相关概念

C++ 指针学习起来有点难,但是很重要。一些 C++ 程序使用指针更容易执行,另外其他 C++ 程序,例如动态内存分配,没有指针就无法执行。

每个变量都是一个内存位置,每个内存位置都定义了其地址,可以使用与号(&)运算符访问该地址,该运算符表示内存中的地址。

下面代码考虑以下将打印定义的变量的地址

  1. #include <iostream> 
  2.  
  3. using namespace std; 
  4. int main () { 
  5.    int  var1; 
  6.    char var2[10]; 
  7.  
  8.    cout << "Address of var1 variable: "
  9.    cout << &var1 << endl; 
  10.  
  11.    cout << "Address of var2 variable: "
  12.    cout << &var2 << endl; 
  13.  

输出如下

  1. Address of var1 variable: 0x61fe1c 
  2. Address of var2 variable: 0x61fe12 

指针声明

 

在编程语言中,指针是一个变量,其值是另一个变量的地址。与任何变量或常量一样,您必须先声明一个指针,然后才能使用它。

指针变量声明的一般形式是 :

  1. type *var-name

这里,type是指针的类型;它必须是有效的 C++ 类型,并且var-name是指针变量的名称。

用于声明指针的星号与用于乘法的星号相同。但是,在此语句中,星号用于将变量指定为指针。

下面是有效的指针声明

  1. int    *ip;    // pointer to an integer 
  2. double *dp;    // pointer to a double 
  3. float  *fp;    // pointer to a float 
  4. char   *ch     // pointer to character 

所有指针的值的实际数据类型,无论是整数、浮点数、字符还是其他类型,都是相同的,一个长的十六进制数,代表同一个内存地址。

不同数据类型的指针之间的唯一区别是指针指向的变量或常量的数据类型。

C++ 使用指针

 

 学习C++指针声明和指针相关概念

  1. #include <iostream> 
  2. using namespace std; 
  3.  
  4. int main(){ 
  5.     int var = 5; 
  6.     int *ip; 
  7.     ip = &var; 
  8.     cout << "变量Var的值:"  << endl; 
  9.     cout << var << endl; 
  10.     cout << "变量Var的中存储的地址ip:" << endl;  
  11.     cout << ip << endl; 
  12.     cout << "访问指针中可用地址处的值:"
  13.     cout << *ip << endl; 

具体输出如下

  1. 变量Var的值: 
  2. 变量Var的中存储的地址ip: 
  3. 0x61fe14 
  4. 访问指针中可用地址处的值:5 

请注意,0x0相当于0. 它只是 的十六进制表示0。

指针的概念

 

指针有很多但很简单的概念,它们对 C++ 编程非常重要。以下是 C++ 程序员应该清楚的几个重要的指针概念 -

学习C++指针声明和指针相关概念

空指针

 

如果没有要分配的确切地址,将指针 NULL 分配给指针变量。分配为 NULL 的指针称为空指针。

  1. #include <iostream> 
  2.  
  3. using namespace std; 
  4. int main () { 
  5.    int  *ptr = NULL
  6.    cout << "The value of ptr is " << ptr ; 
  7.  } 

当上面的代码被编译和执行时,它会产生以下结果 -

  1. The value of ptr is 0 

在大多数操作系统上,不允许程序访问地址 0 处的内存,因为该内存是由操作系统保留的。空指针:指针变量指向内存中编号为0的空间

要检查空指针,您可以使用 if 语句如下 -

  1. if(ptr)     // succeeds if p is not null 
  2. if(!ptr)    // succeeds if p is null 

指针算术

 

指针是一个地址,它也是一个数值;因此,可以像对数值一样对指针执行算术运算。有四种算术运算符可用于指针:++、--、+和-。

“指针++”和“指针--”表示指针所指地址的下一个或前一个数据的地址。

  1. #include <iostream> 
  2. using namespace std; 
  3. int main() 
  4.  int a[5]; 
  5.  int i; 
  6.  int *p; 
  7.  for(i=0; i<5; i++) 
  8.   cin>>a[i]; 
  9.  cout<<endl; 
  10.  for(i=0; i<5; i++) 
  11.   cout<<a[i]<<"  ";//使用数组名和下标访问的方式访问数组进行输出 
  12.  for(i=0; i<5; i++) 
  13.   cout<<*(a+i)<<"  ";//使用数组名和指针运算访问的方式进行输出 
  14.  for(p=a; p<(a+5); p++) 
  15.   cout<<*p<<"  ";//使用指针变量访问的方式进行输出 
  16.  return 0; 

运行结果

  1.  
  2. 1  2  3  4  5  1  2  3  4  5  1  2  3  4  5 

原文链接:https://mp.weixin.qq.com/s/SiLmZD-V_ZNqSaR4ibb7nA

延伸 · 阅读

精彩推荐
  • C/C++使用C++制作简单的web服务器(续)

    使用C++制作简单的web服务器(续)

    本文承接上文《使用C++制作简单的web服务器》,把web服务器做的功能稍微强大些,主要增加的功能是从文件中读取网页并返回给客户端,而不是把网页代码...

    C++教程网5492021-02-22
  • C/C++c/c++内存分配大小实例讲解

    c/c++内存分配大小实例讲解

    在本篇文章里小编给大家整理了一篇关于c/c++内存分配大小实例讲解内容,有需要的朋友们可以跟着学习参考下。...

    jihite5172022-02-22
  • C/C++c/c++实现获取域名的IP地址

    c/c++实现获取域名的IP地址

    本文给大家汇总介绍了使用c/c++实现获取域名的IP地址的几种方法以及这些方法的核心函数gethostbyname的详细用法,非常的实用,有需要的小伙伴可以参考下...

    C++教程网10262021-03-16
  • C/C++深入C++拷贝构造函数的总结详解

    深入C++拷贝构造函数的总结详解

    本篇文章是对C++中拷贝构造函数进行了总结与介绍。需要的朋友参考下...

    C++教程网5182020-11-30
  • C/C++关于C语言中E-R图的详解

    关于C语言中E-R图的详解

    今天小编就为大家分享一篇关于关于C语言中E-R图的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Struggler095962021-07-12
  • C/C++OpenCV实现拼接图像的简单方法

    OpenCV实现拼接图像的简单方法

    这篇文章主要为大家详细介绍了OpenCV实现拼接图像的简单方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    iteye_183805102021-07-29
  • C/C++C语言main函数的三种形式实例详解

    C语言main函数的三种形式实例详解

    这篇文章主要介绍了 C语言main函数的三种形式实例详解的相关资料,需要的朋友可以参考下...

    ieearth6912021-05-16
  • C/C++C语言实现双人五子棋游戏

    C语言实现双人五子棋游戏

    这篇文章主要为大家详细介绍了C语言实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    两片空白7312021-11-12