指针 应用

来源:互联网 发布:淘宝虎扑伙伴是正品吗 编辑:程序博客网 时间:2024/05/01 06:29

 
#include <iostream>
using namespace std;

int f(int *& a, int *  b)
{
        cout<<*a<<endl;
        cout<<*b<<endl;

        return *a;
}
int T=1;
int ff(int * a){
cout<<(*a)<<"/t"<<a<<"/t"<<(&a)<<endl;
a=&T;
cout<<(*a)<<"/t"<<a<<"/t"<<(&a)<<endl;
}

int gg(int *& a){
cout<<(*a)<<"/t"<<a<<"/t"<<(&a)<<endl;
a=&T;
cout<<(*a)<<"/t"<<a<<"/t"<<(&a)<<endl;
}

int main()
{
        int a=1000;

        int *pa=&a;
        cout<<"ff(int *a)  /n";
        cout<<"a:"<<a<<"/t(*pa)"<<(*pa)<<"/tpa:"<<pa<<"/t(&pa)"<<(&pa)<<endl;
        ff(pa);
        cout<<"a:"<<a<<"/t(*pa)"<<(*pa)<<"/tpa:"<<pa<<"/t(&pa)"<<(&pa)<<endl;
        cout<<"----------------------------------------/n";
        cout<<"gg(int *& a) /n";
        cout<<"a:"<<a<<"/t(*pa)"<<(*pa)<<"/tpa:"<<pa<<"/t(&pa)"<<(&pa)<<endl;
        gg(pa);
        cout<<"a:"<<a<<"/t(*pa)"<<(*pa)<<"/tpa:"<<pa<<"/t(&pa)"<<(&pa)<<endl;
}


//output
ff(int *a)
a:1000  (*pa)1000       pa:0x7fff4d8ffbf4       (&pa)0x7fff4d8ffbe8
1000    0x7fff4d8ffbf4  0x7fff4d8ffbc0
1       0x601290        0x7fff4d8ffbc0
a:1000  (*pa)1000       pa:0x7fff4d8ffbf4       (&pa)0x7fff4d8ffbe8
----------------------------------------
gg(int *& a)
a:1000  (*pa)1000       pa:0x7fff4d8ffbf4       (&pa)0x7fff4d8ffbe8
1000    0x7fff4d8ffbf4  0x7fff4d8ffbe8
1       0x601290        0x7fff4d8ffbe8
a:1000  (*pa)1  pa:0x601290     (&pa)0x7fff4d8ffbe8


//指针会复制地址
int a;
fa is not equal with pa,进入函数内,用一个新的变量,这个变量地址不等于pa, 这个变量指向的内容里,从pa指向的地址拷贝而来. 也就是这两指针
 都包含a的地址.
 (fa)        pa               a
  |         |            
 [address of a]   -- - - - ->  [address of a]  
        copy addre
引用的话,不会产生新的变量,直接使用!

黄山日落

 

原创粉丝点击