C++中指針和指針變量


指針和指針變量的理解:

#include<iostream>
using namespace std;
int main()
{
    int n;
    int * m;
    m = &n;
    n = 10;
    cout << "n=:" << n << endl;
    *(int*)m = 110;
    cout << "*m:" << *m << endl;
    cout << "n:" << n << endl;
    cout << "&n:    " << &n << endl;
    cout << "m:    " << m << endl;
    system("pause");
    return 0;
}

 

指針:放的是其他普通變量在內存中的首地址。比如上面的代碼,&n代表n的首地址,是個指針。&n還有個名字,叫做引用,n是個整型變量,整型變量這四個字只是個名詞,它指代的是內存中一塊連續地址,此例是4個字節的連續內存地址。地址是用整數表示的。

指針變量:存放其他變量地址的那個變量。比如上面代碼中的m就是一個指針變量。

所以,指針是個首地址,是個整數,是個常量;指針變量是個變量。指針變量前面加個*號,意思是解引用,代表m所指向的那個普通變量的整型值。

int * m; //這句話中int *代表指向整型的指針,這樣寫是准備定義一個指針變量,m就是定義的指針變量,它用來存放其他普通變量的首地址。也可以這樣理解:m是個指針變量,它的類型是整型指針類型。


 再來一例:

#include<iostream>
using namespace std;
int main()
{
    int a = 10;
    int b = 22;
    int *p1;
    int* p2;
    p1 = &a;
    p2 = &b;
    cout << "a的地址是:"<<&a<< endl;
    cout << "b的地址是:" << &b << endl;
    cout << "指針變量p1所指向的地址是:"<<p1 << endl;
    cout << "指針變量p2所指向的地址是:" << p2 << endl;
    system("pause");
    return 0;

}
View Code

運行結果:

 

#include<iostream>
using namespace std;
int main()
{
    int a = 10;
    int b = 22;
    int *p1;
    int* p2;
    p1 = &a;
    p2 = &b;
    cout << "a的地址是:"<<&a<< endl;
    cout << "b的地址是:" << &b << endl;
    cout << "指針變量p1所指向的地址是:"<<p1 << endl;
    cout << "指針變量p2所指向的地址是:" << p2 << endl;
    cout << "指針變量p1本身的地址是:" << &p1 << endl;
    cout << "指針變量p2本身的地址是:" << &p2 << endl;
    system("pause");
    return 0;

}
View Code

運行結果:

可見,指針本身在內存中也有自己的地址。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM