复合类型的声明——是int *p还是int* p
我们先来看一条基本类型的声明语句:int a, b, ...
即一条声明语句由一个数据类型(int)和紧随其后的一个变量名列表(a, b, ...)组成
更通用的描述是:一个基本数据类型和紧随其后的一个声明符列表组成,每个声明符命名了一个变量并指定该变量是与该基本数据类型有关的某种类型。
例如:上面的声明语句中,声明符其实就是变量名,变量的类型也就是声明的基本数据类型。这只说明这个声明符是简单的,我们下面介绍更复杂的声明符,它基于基本数据类型得到更复杂的类型(如指针、引用等),并把它指定给变量。
我们来看这么一条定义语句:int i = 10, *p = &i, &r = i;
上面这条定义语句中包含类型修饰符“*”、“&”,我们往往迷惑于基本数据类型和类型修饰符的关系,但必须要知道的是类型修饰符只是声明符的一部分罢了。
再来看这么一条声明语句:int *p1, *p2;
我们往往称“*”为类型修饰符,而将“p1”称为变量标识符,声明符就是类型修饰符和变量标识符的组合“*p1”。
这种形式着重强调变量具有复合类型。
还有一种声明的方法:int* p1, p2;
我们本打算定义两个指针变量p1和p2,但结果却是只定义了一个指针变量p1,变量p2则是int型变量。
之所以会产生这样的错误,是因为我们误以为类型修饰符“*”作用于本次定义的全部变量,int*放在一起好像是这条声明语句中所有变量共同的类型一样。其实,基本数据类型是int而非int*,“*”仅仅是修饰了p1而已,对该声明语句中的其他变量并不产生任何作用。
如果我们硬是要让基本数据类型和类型修饰符放在一起,可以每条声明语句只定义一个变量:
int* p1;
int* p2;
这种形式着重强调本次声明定义了一种复合类型。
【补充】
这样的声明语句等价于上面的声明语句:int* p1, *p2; //不觉得难看??
结论:题目中的两种方法都可以,但推荐使用声明符的方法!
复合类型的声明——是int *p还是int* p的更多相关文章
- 变量和基本类型——复合类型,const限定符,处理类型
一.复合类型 复合类型是指基于其他类型定义的类型.C++语言有几种复合类型,包括引用和指针. 1.引用 引用并非对象,它只是为一个已存在的对象所起的另外一个名字. 除了以下2种情况,其他所有引用的类型 ...
- C语言中的复合类型
复合类型 一.掌握的类型 1. 指针数组 int * arr[10]; //arr是一个数组,有10个元素,每个元素都是一个指针,即arr是一个指针数组 int a,b,c,d; arr[0] = & ...
- 学习C++.Primer.Plus 4 复合类型
本章介绍的有复合类型有: 数组. 字符串. 结构. 共用体. 指针 数组: 声明数组时数组长度必须为常量(或const). 只有初始化时可以用“=”,其它时候均不可以给数组直接赋值,除了赋值的元素以外 ...
- c++学习总结--复合类型,const。
复习c++,有必要对一些东西做一下笔记,方便以后学习,如有问题,欢迎提出. 首先,最常用两种复合类型应该是引用和指针. 所谓复合类型,是在基本类型基础(如:int)上定义的类型. 引用是c++的一个复 ...
- go - 复合类型 array, slice, map
Go 语言支持复合类型: 数组:array 切片:slice 指针:pointer 字典:map 通道:chan 结构体:struct 接口:interface 1. array 同一类型数据的集 ...
- c++中的复合类型
复合类型是指基于其他类型而定义的类型. 而这里介绍的是引用和指针.并且指针和引用都提供了对其他对象的间接访问. 引用 引用还是很好理解的,就是为对象起了另外一个名字,引用类型引用另外一种类型. 通常将 ...
- WebService之Axis2(2):复合类型数据的传递
在实际的应用中,不仅需要使用WebService来传递简单类型的数据,有时也需要传递更复杂的数据,这些数据可以被称为复合类型的数据.数组与类(接口)是比较常用的复合类型.在Axis2中可以直接使用将W ...
- 《C++ Primer Plus》读书笔记之二—复合类型
二.第四章 复合类型 1.C-风格字符串:C-风格字符串具有一种特殊的性质:以空字符结尾,空字符被写成\0,其ASC||编码为0,用来标记字符串的结尾.例如: char dog[5]={'b','e ...
- Hive 文件格式 & Hive操作(外部表、内部表、区、桶、视图、索引、join用法、内置操作符与函数、复合类型、用户自定义函数UDF、查询优化和权限控制)
本博文的主要内容如下: Hive文件存储格式 Hive 操作之表操作:创建外.内部表 Hive操作之表操作:表查询 Hive操作之表操作:数据加载 Hive操作之表操作:插入单表.插入多表 Hive语 ...
随机推荐
- Openresty最佳案例 | 第1篇:Nginx介绍
转载请标明出处: http://blog.csdn.net/forezp/article/details/78616591 本文出自方志朋的博客 Nginx 简介 Nginx是一个高性能的Web 服务 ...
- jwplayer 参数记录
jwplayer().getPosition()://播放了多少秒 jwplayer('playerdiv').play(); || jwplayer(0).play(true/false); // ...
- oracle中connect by语句的优化
很多应用中都会有类似组织机构的表,组织机构的表又通常是典型的层次结构(没有循环节点).于是通过组织控制数据权限的时候,许多人都喜欢通过connect by获得组织信息,然后再过滤目标数据. 在有些情况 ...
- Percona-Tookit工具包之pt-index-usage
Preface There're many ways relevent with performance tuning.For example,using indexes proper ...
- deepin15.7下使用apt安装mysql5.7不显示root密码设置的解决方法
在安装MySQL的过程中,并没有要求设置root账户密码的步骤,导致很多人无法使用root账户登录 这个问题早已有解决方案,笔者在deepin15.7下安装也遇到同样问题,只是做一个简单的记录 解决思 ...
- Co. - Microsoft - Windows - 快捷键
[F1-F12]键 [Win]键 Windows键就是电脑键盘上是Windows图标的键,一般在Ctrl键和Alt键之间.搜索看整个键盘你会发现键盘上有两个Windows键,主要是左右手设计方便按各种 ...
- 【nat---basic,napt,easy ip】
display nat :显示nat 信息 debugging nat :对nat进行调试 reset nat session:擦除nat连接配置 basic-nat:公网->私网(一对一) n ...
- vue入门笔记
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与 ...
- python字符串编码
python默认编码 python 2.x默认的字符编码是ASCII,默认的文件编码也是ASCII. python 3.x默认的字符编码是unicode,默认的文件编码是utf-8. 中文乱码问题 无 ...
- linux下SVN CVS命令大全
1.将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn: // 192.168. 1.1 / pro / doma ...