方括号是什么意思
问题描述
- 精选答案
-
这个问题问错了,你把它们当成表达式来问了。
如果是表达式,那么方括号里应该有个数字,或变量,否则你没东西算。
那么就应该是声明了,你缺少了基类型。
一看就知道你是初学者,把指针声明里的星号,和普通算式里的间接访问运算搞混了。
假设你的基类型是整数,用int,那么int *p;这句话里int的意思,就是你指针里存的那个地址所对应的那个空间,是用来存整数的,不能存小数或字母等。
这个表达式是这么看的:int *p;
不要这么看:int *p;
int叫做基类型,int *叫做指向int型数据的指针类型——p里存的是个指针,也就是地址。
那么int **,就是以int *为基类型的指针类型。它是指向指针的指针——它作为一个地址,所连接的存储空间里,存的是指向int数据的地址。
所以int **p〔〕;就是告诉计算机:给我一连串的空间,每个空间都是装地址的,而且这些地址是指向地址的,别给我搞成指向其他类型的了……
那么int *(*p)〔〕;想懂这句声明,你要先明白一个概念:数组的名字,是一个指针。也就是说,数组的名字,他天然就装着这个数组的地址(也就是它第一个元素的地址)。
比如inta〔〕;int *p;这两句话写出来了——那么,我可以直接用p=a;把a的值给p。
所以int *(*p)〔〕;这句话里,(*p)相当于一个数组名,也就是地址,而这里的*p,不是取p指向的值!而是在说:p是个指针!!!这个指针指向的指针,是这个数组的第一个元素的地址(也就是这个数组的指针)。
——再连上前面的int *——是说:有一连串的空间,每个空间里都装的都是地址,这些地址指向的是int型数据。而p,是指针,它指向另一个指针,这个指针没有名字,但是这个没名字的指针,是指向这个数组的——也就是与这个数组里的第一个元素的地址相等。
我知道你不懂,那就再举个简单的例子。
int a〔〕;int (*p)〔〕;这两句话出来了,我能不能用p=a;来给p赋a值?显然不能,因为a是个地址,p是个指向地址的地址,所以应该是p=&a;来把a的地址赋给p。
或者直接写成int (*p)〔〕=&a;——这句话很有迷惑性啊!!一不留神你就把等号左边当成个算式开始取值了——千万时刻注意!当一个数据类型和星号共同出现时,它们的目的只有一个:告诉计算机这是指针。至于是指向啥的指针,你自己仔细。
我知道说了这么多,可能你一个字都没看懂。
但没关系,这些都是纯玩儿概念的,没什么实用价值,属于“贵族的娱乐”~
猜你喜欢内容
-
简单网:构建全网教育数据枢纽,让知识检索化繁为...
简单网:构建全网教育数据枢纽,让知识检索化繁为“简”回答数有0条优质答案参考
-
去三亚有什么好玩的地方
去三亚有什么好玩的地方回答数有1条优质答案参考
-
石狮一日游必去景点推荐
石狮一日游必去景点推荐回答数有1条优质答案参考
-
电气工程师的证书考取条件是什么
电气工程师的证书考取条件是什么回答数有1条优质答案参考
-
房地产估价师的具体报考条件有啥
房地产估价师的具体报考条件有啥回答数有1条优质答案参考
-
房产经纪人的工作内容具体包含什么
房产经纪人的工作内容具体包含什么回答数有1条优质答案参考
-
学习小提琴都有哪些难点
学习小提琴都有哪些难点回答数有1条优质答案参考
-
企业行政管理证书的含金量怎么样
企业行政管理证书的含金量怎么样回答数有1条优质答案参考
-
初学者要怎么入门小提琴
初学者要怎么入门小提琴回答数有1条优质答案参考
-
报考珠宝鉴定师要啥条件
报考珠宝鉴定师要啥条件回答数有1条优质答案参考
推荐阅读
















