在C++种,关于指针的这两种表示有啥区别:double * a和double ** a?两个**是啥意思呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在C++种,关于指针的这两种表示有啥区别:double * a和double ** a?两个**是啥意思呢?相关的知识,希望对你有一定的参考价值。

1、double * a;意思是a指向一个double变量的地址。

2、double **a;意思是a指向一个地址,而这个地址指向一个double变量。

在计算机科学中,指针(Pointer)为编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。

扩展资料:

C++的工作原理:生成程序是指将源码(C++语句)转换成一个可以运行的应用程序的过程。如果程序的编写是正确的,那么通常只需按一个功能键,即可搞定这个过程。该过程实际上分成两个步骤。

1、对程序进行编译,这需要用到编译器(compiler)。编译器将C++语句转换成机器码(也称为目标码);如果这个步骤成功,下一步就是对程序进行链接,这需要用到链接器(linker)。

2、链接器将编译获得机器码与C++库中的代码进行合并。C++库包含了执行某些常见任务的函数(“函数”是子程序的另一种称呼)。

参考资料来源:百度百科-C++

参考技术A double * a;意思是a指向一个double变量的地址;
double **a;意思是a指向一个地址,而这个地址指向一个double变量;
举个例子:
double i=10.11;
double *ptr=&i;
double **pptr=&ptr;
cout<<"测试地址:"<<endl;//输出结果一样,都是i的地址
cout<<&i<<endl;
cout<<ptr<<endl;
cout<<*ptr<<endl;
cout<<"测试值:";//输出结果一样,都是i的值
cout<<i<<endl;
cout<<*ptr<<endl;
cout<<**pptr<<endl;

Lz现在明白没有?本回答被提问者采纳

这两种符号有啥区别?

【中文标题】这两种符号有啥区别?【英文标题】:What is the difference between this two notations?这两种符号有什么区别? 【发布时间】:2021-01-08 10:26:13 【问题描述】:

所以,基本上我想知道这两种符号之间有什么区别(如果有的话):

第一个例子:

struct Node
int data;
Node* next;
;
Node* head;

第二个例子:

struct Node
int data;
struct Node* next;

struct Node* head;

我只是想知道这两种记法有什么区别,哪一种更好用?

【问题讨论】:

在 C++ 中,没有区别。这两个示例的作用完全相同,变量上的额外struct 关键字是可选的。使用第一种方式,打字更短。但是,在 C 中,还是有区别的。 好的,谢谢。您更喜欢或推荐使用哪种表示法? 第一个在C是非法的。 我明白了,谢谢! :) @MarekR true,但问题被标记为 C++,第一种方式是合法的,在 C+= 中是首选 【参考方案1】:

我想知道这两种符号有什么区别(如果有的话)

Node 是类的类型名称。仅当已声明类时才能使用它。示例:

Node* ptr; // won't work without prior declaration
struct Node;

struct Node;
Node* ptr; // works because of prior declaration

struct Node 是使用详细类型说明符的相同类型名称。它本身就是类的声明。示例:

struct Node* ptr; // works without prior declaration

当函数和类同名时,可以使用详细的类型说明符来消除歧义:

struct Node;

void Node();

void foo() 
    Node* ptr;        // this won't work
    struct Node* ptr; // this works
    Node();           // this is a function call

鉴于在您的示例中已经声明了类,并且没有模棱两可的函数,除了struct Node 的输入时间长了大约 64% 之外,没有其他区别。

两次使用哪个更好?

你喜欢哪个。你喜欢多打字还是少打字?


关于 C 语言的注意事项:在 C 中,结构不会自动获得类型名称,因此只能使用详细的类型说明符来引用它们,除非使用 typedef 显式地为结构指定了类型名称。这就是为什么您可能会看到在 C 中比在 C++ 中更常用的详细类型说明符,以及在 C++ 中多余的 typedef。

【讨论】:

以上是关于在C++种,关于指针的这两种表示有啥区别:double * a和double ** a?两个**是啥意思呢?的主要内容,如果未能解决你的问题,请参考以下文章

C ++类构造函数设置变量这两种方式有啥区别?

动态内存与智能指针

返回Task的这两种方法之间的区别[重复]

VC++ 6.0当中,CString和string这两种类型有啥区别?

这两种符号有啥区别?

在 SQLAlchemy 中,这两种模型有啥区别?