所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

方括号是什么意思?

发布时间:2020-04-12 08:49:36

资讯分类:方括号  指针  地址  指向
方括号是什么意思?

这个问题问错了,你把它们当成表达式来问了。


如果是表达式,那么方括号里应该有个数字,或变量,否则你没东西算。


那么就应该是声明了,你缺少了基类型。

一看就知道你是初学者,把指针声明里的星号,和普通算式里的间接访问运算搞混了。


假设你的基类型是整数,用int,那么int *p;这句话里int的意思,就是你指针里存的那个地址所对应的那个空间,是用来存整数的,不能存小数或字母等。

这个表达式是这么看的:int * p;

不要这么看:int *p;

int叫做基类型,int *叫做指向int型数据的指针类型——p里存的是个指针,也就是地址。

那么int **,就是以int *为基类型的指针类型。它是指向指针的指针——它作为一个地址,所连接的存储空间里,存的是指向int数据的地址。

所以int ** p〔〕;就是告诉计算机:给我一连串的空间,每个空间都是装地址的,而且这些地址是指向地址的,别给我搞成指向其他类型的了……


那么int * (*p)〔〕;想懂这句声明,你要先明白一个概念:数组的名字,是一个指针。也就是说,数组的名字,他天然就装着这个数组的地址(也就是它第一个元素的地址)。

比如int a〔〕;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 条评论)
   
验证码:
Top