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

作者&投稿:钟震 (若有异议请与网页底部的电邮联系)
C语言,int **p; *p表示什么意思啊?~

int **p是一个2阶指针,它里面存放的是指向整形变量的指针的地址
如果是int *p,那么p中存放的是整形变量的地址
int n=0;
int *p;
int**q;
p=&n;(即存放的是n的地址)
q=&p;(即存放的是p的地址)
不管什么样的指针,它所存放的都是内存的地址,只不过存放的地址不一样而已,好好理解

您好,我来回答你的问题,int *p[3]是指针数组,这个数组有3个元素,每个元素都是指针。int (*p)[3]是指向一维数组的指针变量,就是这个指针指向了一个一维的数组。
很荣幸为您回答问题,祝您开心,生活愉快~~~

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

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

扩展资料

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

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

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

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

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

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

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



把两颗星看做一个整体符号吧,一个星的指针存放的是变量的地址。两颗星的指针存放的是指针的地址,这样理解一下。
举例: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星也不为怪的,呵呵,不要被他所吓倒,工具嘛,用用总会熟练的。

指针的指针,也就是说,二维指针p指向的是一个指针(也就是地址)。在数组中的例子就是,一维数组的数组名是一个指针,也是这个数组的起始地址;那么,二维数组的数组名就是一个指针数组的首地址(这个指针数组的每个元素是一个指针,也可以看做是一维数组),二维数组就是数组的数组嘛!这时,*p代表这个指针数组的首元素,也就是一个一维指针;**p代表这个一维指针指向的数据。

指向指针的指针。

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


2个*号什么意思?
2 个*号,声明指向指针的指针。它的意思是“它是一个整数,这个整数指向某个内存地址,一次访问sizeof(int)长度,其值是一个整数,那个整数值指向某个内存地址,一次访问sizeof(BTree)长度。指针可以指向一份普通类型的数据,例如 int、double、char 等,也可以指向一份指针类型的数据,例如 int *、d...

C语言中两个*是什么意思?比如int**p
指针的指针,也就是说,二维指针p指向的是一个指针(也就是地址)。在数组中的例子就是,一维数组的数组名是一个指针,也是这个数组的起始地址;那么,二维数组的数组名就是一个指针数组的首地址(这个指针数组的每个元素是一个指针,也可以看做是一维数组),二维数组就是数组的数组嘛!这时,*p代表这个指针数组的首元素,也...

C语言 void ds_init(node **pNode)形参为两个星号是什么意思呀,
两个“*”号的指针变量,表示指针的指针,问题中的pNode指向的对象还是一个指针。下图是一个示例:

C语言一个* 两个* 三个*分别是什么意思
一个*代表指针,该指针指向的内存地址就是目标数据,两个*代表二级指针,就是本身是个指针,该指针指向的内存地址存放的也是一个指针,存放的指针指向的内存地址才是目标数据,三个*一样的理解,但是三个*基本不出现,

C语言中两个 * 在一起是什么意思
一般指针的定义是:struct task_struct *b; b=&a,这里b是一个指向a的指针,它的值就是a的地址,也就是0x12342000,当然b也是一个变量,也需要在内存中保存它,所以假设b在内存中的地址是0x12342010;指向指针的指针的定义是:struct task_struct **p; p=&b,这里p是一个指向b的指针,它的值...

C语言中 * * 是什么运算符
没有吧*有两个含义,一个是乘法远算符,一个是取值(作用对象是指针,)得到的是指针所指的值。

c语言中, char **p 两个*代表什么意思,正常指针不该是一个*么
在定义变量的时候,两个**表示这也是一个指针变量,但里面存储的地址必须是另一个指针变量的内存地址(而另一个指针变量当中存储的才是你定义的那个类型(如char)的成员的内存地址)这个层次结构如下:int a=0;int *b=&a;int **c=&b;这样你应该就明白了 另外,在C语言中,char*表示字符串 (字符...

C语言中定义变量时在变量前面加2个星号是什么意思
C语言在定义变量时加两个星号是表明这个变量为二级指针 C语言中在定义变量时使用 * 号是为了表明该变量为指针 指针有分一级指针,二级指针,三级指针等,有几个 * 号就相当于是几级指针

c语言char后面有两个*是怎么回事 例如:static char *a[]={"first...
char **n 相当于char *(*n),表示指针变量n指向一个字符指针的变量,*n就是n所指向的另一个指针变量。n=a是把数组的首地址给了指针变量n,**n也就是二级地址指针。希望我的回答能够帮助你。

在C语言中两个**是什么意思,如char**Formula;
1 int * 表示只能存放int类型变量的地址 如 int a;int * p = &a;其中 p的数据类型是 int *类型 因为 数据类型 * 表示只能存放这种数据类型的地址 所以 例子 int a;int * p = &a;int * * q = &p;q 是int * *类型,只能存放int * 类型数据的地址 所以和二楼说的一样,只能存放...

大名县17591419199: C语言中int*是什么意思? -
竹诚盐酸: int*是指向int的指针 char*是指向char的指针*a是对指针a解引用 char* p;是声明一个char*类型的指针*p = &c;把c的地址赋给p指向存储的内存 int b = 3; int* a = &b; // 取b的地址并赋给指针a*a = 4; // 修改a所指向地址的内存内容为4,因为a指向b,所以这句执行之后b = 4

大名县17591419199: c语言中两个*号连在一起是什么意思呀 -
竹诚盐酸: 假如是声明 如 int **ppVal;是声明一个指向指针的指针假如是引用 如 int b=**ppVal+5;**ppVal是引用ppVal所指向的地址中的那个指针所指向的值

大名县17591419199: C语言中int argc,char **argv,一个“*”是代表指针,两个“*”是什么意思?命令行函数为什么都这样定义 -
竹诚盐酸: char **argv 也可以写成 char *argv[ ] 还可以写成 char argv[ ][ ],一样的效果,其目的时接受命令行的参数.比如说你的程序时这样:while( iprintf("argv[%d]: ", i); printf("%s\n", argv[i]); i++; } 你在cmd中运行这个程序, print.exe hello, world.那么输出应该是:argv[0]: ...../print.exe(路径) argv[1]: hello,argv[2]: world.其中argc = 2, argv 就是二位数组保存了你输入的参数.

大名县17591419199: c语言中int*代表什么意思 -
竹诚盐酸: int*表示定义一个int*类型的变量,即int型的指针变量. int表示基本的数据类型(整型); *表示指针操作符. 举例如下: int a[]={1,2,3,4,5}; // 定义一个int类型的数组,包含5个元素int* p2=a; // 定义一个int类型的指针变量p1,指向数组a的首c语言中int*代表什么意思

大名县17591419199: 在C语言中两个**是什么意思,如char**Formula; -
竹诚盐酸: 一楼回答的和原题不是一个理1 int * 表示只能存放int类型变量的地址如 int a; int * p = &a;其中 p的数据类型是 int *类型因为 数据类型 * 表示只能存放这种数据类型的地址所以例子 int a;int * p = &a;int * * q = &p;q 是int * *类型,只能存放int * 类型数据的地址所以和二楼说的一样,只能存放 int *类型变量的地址

大名县17591419199: C语言中int * p;的含义 -
竹诚盐酸: 在c语言中 * 是指针运算符. *p表示指针变量p所指向的变量的值.即p中存储的内存地址 所存储的变量的值. 另外 容易混淆的地方是; 定义一个指针变量p时,如 int *p; 表示定义了一个指向整型变量的指针变量p. 望采纳.

大名县17591419199: 在C语言二级上机考试中2.*i是什么意思啊 -
竹诚盐酸: 2.*i等价于2.0*i,写成2.0*i是为了提高计算精度,吧int型转换成folate型

大名县17591419199: 请问在C语言中在定义时,前面有1个*说明是指针,有2个*是什么意思? -
竹诚盐酸: 指向指针的指针

大名县17591419199: 二级C语言中 两个*号 即** 是什么运算符? -
竹诚盐酸: 没有**,你所谓的**应该是在这种情况下使用: 假设指针a指向一个指针b,b指向一个数据c. 那么*(*a)其实就是引用数据c,这是一个二级指针.

大名县17591419199: C语言函数括号中的& *分别表示什么意思? -
竹诚盐酸: 函数声明/定义里, * 表示指针. C++ 语言里 &表示引用.C 语言里 没有 “引用”一说. 例如: 声明 int fun(int a, int *b); 参数 *b 是指针. 调用 fun(a, &b); &b 是实参,表示b 的地址. C++ 语言里 getelem(lintlist &l,int e,int *n) -- & 表示引用, 参数 *n 是指针.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网