首页 > 编程知识 正文

C 的解引用概念,方程的解的概念

时间:2023-05-05 14:52:03 阅读:190992 作者:1219

在c++中,*和&在不同的地方有着不同的意义。那么就开门见山先说解引用——解释引用,说的通俗一点就是,直接去寻找指针所指的地址里面的内容,此内容可以是任何数据类型,当然也可以是指针。

1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int *p ,a=6; 5 p=&a; 6 cout<<p<<endl; 7 cout<<*p<<endl; 8 // cout<<&*p<<endl; 9 // cout<<*(&*p)<<endl;10 return 0;11 }

上面第4行代码声明一个int类型的指针,以及一个int类型的变量a并初始化为6。此时的*表示声明一个指针p,第5行让指针p指向a的地址。因此第6行输出的是a在内存中的地址。而第7行就是解引用。具体解释指针p所指向的内存地址里存放的内容。

下面介绍引用

1 int *p ,a=6;2 p=&a;3 int &c=a;4 cout<<c<<endl;

&表示的是引用,就表示函数内的变量和主函数的变量是同一个,函数内改变它的值,主函数相应的变量也就跟着改变了;没有&符号,就表示函数内的变量是主函数的变量的一个副本,在函数内改变其值,是不会改变主函数中变量的值的。

下面说一下啥叫脱解引用——就是用&抵消掉*对a的引用效果。

1 #include <iostream> 2 using namespace std; 3 int main(){ 4 int *p ,a=6; 5 p=&a; 6 int &c=a; 7 cout<<c<<endl; 8 cout<<p<<endl; 9 cout<<*p<<endl;10 cout<<&*p<<endl;11 cout<<*(&*p)<<endl;12 return 0;13 }

因此代码的第10行输出的是a的内存地址,而代码第11行输出的是a的值。

结果如下

 c++中(.和->)的区别:

A *p则使用:p->play(); 左边是结构指针。
A p 则使用:p.paly(); 左边是结构变量。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。