C语言中两个*是什么意思?比如int**p

能举个例子吗?谢谢!

2 个*号,声明指向指针的指针。它的意思是“它是一个整数,这个整数指向某个内存地址,一次访问sizeof(int)长度,其值是一个整数,那个整数值指向某个内存地址,一次访问sizeof(BTree)长度。

指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、double *、char * 等。如果一个指针指向的是另外一个指针,我们就称它为二级指针,或者指向指针的指针。

扩展资料

计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。

意思是通过它能找到以它为地址的内存单元。 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

在信息工程中指针是一个用来指示一个内存地址的计算机语言的变量或中央处理器(CPU)中寄存器(Register)【用来指向该内存地址所对应的变量或数组】。指针一般出现在比较接近机器语言的语言,如汇编语言或C语言。面向对象的语言如Java一般避免用指针。

指针一般指向一个函数或一个变量。在使用一个指针时,一个程序既可以直接使用这个指针所储存的内存地址,又可以使用这个地址里储存的函数的值。

另外,指针也指钟表中用来指示对应时间的部件。

参考资料来源:百度百科-二级指针

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
把两颗星看做一个整体符号吧,一个星的指针存放的是变量的地址。两颗星的指针存放的是指针的地址,这样理解一下。
举例:int i=5;
int *p=&i;
int **q=&p;
此时,一级指针p存放的是变量i的地址,通过p可以从地址层上操作i。
其次,二级指针q存放的是指针变量p的地址,通过q可以从地址层上去改变p的值,改变的p的值意味着什么?意味着p的指向发生了改变。
常见的情况用在二维数组比较多。但在com编程中其实也经常见到,最常用的一个com函数: HRESULT QueryInterface( REFIID iid, void** ppvObject); //也就是QI
例子看下即可,com你可能还没接触。
void Test(IUnknown* pI)
{
// 定义一个接口指针
IM* pIM = NULL;
// 查询接口IM
HRESULT hr = pI->QueryInterface(IID_IM, (void**)&pIM);
if (SUCCEEDED(hr))
{
// 通过接口调用函数
pIM->Fun();
}
}

两颗星的指针可能对于初学者有些迷茫,但翻阅国外一些教程,特别是游戏类的,指针能用到4星、5星也不为怪的,呵呵,不要被他所吓倒,工具嘛,用用总会熟练的。本回答被网友采纳
第2个回答  2013-04-13
指针的指针,也就是说,二维指针p指向的是一个指针(也就是地址)。在数组中的例子就是,一维数组的数组名是一个指针,也是这个数组的起始地址;那么,二维数组的数组名就是一个指针数组的首地址(这个指针数组的每个元素是一个指针,也可以看做是一维数组),二维数组就是数组的数组嘛!这时,*p代表这个指针数组的首元素,也就是一个一维指针;**p代表这个一维指针指向的数据。
第3个回答  2013-04-13
指向指针的指针。追问

那意思就是,有一个数组a[i]={1,2,3,4,5,·····} 指针**p,p=a[0】,这个**p就是指向a[0]和a[1]的值,结果**p=a[1]吗?这才是最终结果吗?

追答

int a[i]={1,2,3,4,5,·····} l;
int **p;
*p = a; 对
*p = &a[0]; 对
**p = a[0]; 对
p=a[0];语法没错,但是会有警告,因为这样做表明你还不懂指针。

追问

你能帮我解释一下吗?我也知道我对指针不够理解,所以才有很多问题,真的谢谢你啊,能帮帮我吗?还有 你的*p=&a[0]不是只有在初始化的时候才能这样写吗?

第4个回答  2020-10-04
**=脑婆或脑公,是有科学依据,由于一些特殊场合,这两种称呼不便说出,所以就用这两个符号代替

C语言中两个*是什么意思?比如int**p
这时,*p代表这个指针数组的首元素,也就是一个一维指针;**p代表这个一维指针指向的数据。 班加西2011 | 发布于2013-04-13 举报| 评论 6 5 指向指针的指针。 追问 那意思就是,有一个数组a[i]={1,2,3,4,5,···} 指针**p,p=a[0】,这个**p就是指向a[0]和a[1]的值,结果**p=a[1]吗?这...

C语言 这里为啥有两个**
是指针,两个**则是指针的指针。举例int i=1 i在内存里位置是1000 那么有个指针*p=i的时候p的值就是1000,类型是指针,指向i。同理**q=p,就是指向指针的指针。变量名,位置,值 i,1000,1 p,1001,1000 q,1002,1001

int*+p中的*是一个什么符号而出现在赋值语句*p=0中*是一个什么符号?
在表达式int*p中,*符号用于表示p是指向整数的指针。在赋值语句*p=0中,*符号用于取消指针p的引用,并将值0分配给p指向的内存位置。在C中,*符号有两种不同的用法:当它出现在变量的声明中时,例如int*p,表示该变量是指向指定类型(在本例中为整数)的指针。当它出现在表达式中时,例如*p=0,它...

程序中*代表什么含义?
对于c语言,*有多重含义。如果是两个数中间,表示乘,如果是int * p表示指针,如果是*p表示指针变量取值。

C语言中 指针各个符号的含义int *(*p)();
作为定义的时候,是一个左结合操作符,优先跟其左边的描述相结合 int :整型指针 (*p):用括号调整优先级,强迫其与p作结合,表示p是一个指针类型(否则此处p应与"()"结合作为一个函数,而该"*"则应跟左边的"int "结合作为"int "整型指针的指针)如此,相应的我们就很容易解释其他的如:int 整型...

c语言中在变量前面加*表示什么?如*p
int *p;\/\/定义一个指向int类型地址的指针变量。int a = 5;\/\/定义一个整型变量a,给变量a赋值为5。p=&a;\/\/将指向变量p指向一个整型变量的地址a(&是取地址运算符)。printf("%d",*p);\/\/打印指针p指向的内容,注意这里的"*"和第一行定义时或所用的"*"含义不同,这里的“*”是取出指针...

计算机编程 运算中*是什么意思?
是什么编程语言?如果是C语言,有两个作用,一个是乘法运算符,如a=b*c;,二个指针运算符,如int *p=&a; 。

C语言中*是什么意思
具体来是有3方面:1。定义时 指明某个变量是指针变量 如 int *p;表示p是指针变量,里面存放的是某个变量的地址 2。非定义 *表示地址变量指向的变量;如:*p=a;表示将a变量的值赋予p作为地址指向的变量中 3。作为运算符 a*b 表示a乘于b ...

C语言中(*p)和*(*P)的含义是什么?
int *p=&a; \/\/这里的*p只是定义p为指针的意思 \/\/*p 其实就相当于a printf("%d", *p);\/\/输出6 p=5; \/\/结果是a也等于5 int (*p)(int a, int b); \/\/这里的*p也只是定义p为指针 int *(*p) (int a,int b);\/\/这里只是定义了p为函数指针 int a;int b;int *q=&a;int *...

int*p的含义是什么
所以int * p 该语句和起来的意思就是:定义了一个变量 p,该变量是一个指向整型变量的指针。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽...

相似回答