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

运行结果:

可见,指针本身在内存中也有自己的地址。


原文地址:https://www.cnblogs.com/yibeimingyue/p/9992505.html