C++中关于int *p和 int* p的区别?
2017-06-23 16:15
232 查看
根据C++Primer介绍:
对于int* p(这种写法合法,但是容易造成误导),其基本数据类型是int,后面的*其实是声明符。在一组公用的数据类型后面可以使用不同的声明符。例如: int i =1024, *p = &i, &r = i; //i是一个int类型的数据,p是一个int型的指针,r是一个int型引用。
对于int *p,其和int* p 的含义一样,都表示int类型的指针变量p。
但是将声明符紧跟着变量名是一种更容易理解的做法。否则可能会出现误导现象:
例如 int* p1, p2;表示含义是p1是一个int型的指针,p2是一个int型变量。而不是p1,p2都是指针变量,它们共用的是基本数据类型部分。
如果写成int *p1,p2;则和上式表示的含义完全一样,但是更加清晰,不会造成误导。
不过对于以上两种写法的使用,主要看个人的习惯,但是最好不要混用。
对于int* p(这种写法合法,但是容易造成误导),其基本数据类型是int,后面的*其实是声明符。在一组公用的数据类型后面可以使用不同的声明符。例如: int i =1024, *p = &i, &r = i; //i是一个int类型的数据,p是一个int型的指针,r是一个int型引用。
对于int *p,其和int* p 的含义一样,都表示int类型的指针变量p。
但是将声明符紧跟着变量名是一种更容易理解的做法。否则可能会出现误导现象:
例如 int* p1, p2;表示含义是p1是一个int型的指针,p2是一个int型变量。而不是p1,p2都是指针变量,它们共用的是基本数据类型部分。
如果写成int *p1,p2;则和上式表示的含义完全一样,但是更加清晰,不会造成误导。
不过对于以上两种写法的使用,主要看个人的习惯,但是最好不要混用。
相关文章推荐
- c++里关于cerr,clog,cout三者的区别
- 在C++(WIN32)中int和long有何区别
- 关于C++中给int变量输入字符引起的死循环解决方法
- 关于for循环体里变量的声明的使用在c++、c#里的区别
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- Dev-C++下关于几种int类型格式符的实验
- C++中int,Uint,uint16等有什么区别以及用处
- C++ 输入函数getline(cin,str) 与cin.getline(str,int)区别
- c++里关于cerr,clog,cout三者的区别
- 收集的关于C++中CString,int,string,char*,string之间的转换
- 在C++(WIN32)中int和long有何区别
- 关于C和C++区别的讨论
- c++里关于cerr,clog,cout三者的区别
- [c/c++语言知识点1]int a, (int) &a, (int &)a区别
- 关于LinuxC/C++中字符指针char * str 与字符数组 char str []的一点小区别
- 严肃的问题:在C++(WIN32)中int和long有何区别
- 关于Scanner键盘接收方法中scan.nextLine()和scan.nextInt()的区别
- 关于C++中标准库以及string.h,cstring,string的区别
- BOOL与bool的区别(bool不是c的关键字,c++中bool也不是int)
- C/C++ char和int的区别