天天看點

野指針和空指針

聲明指針的時候沒有初始化,導緻指針指向一個随機的位址,無法使用

#include<iostream>

using namespace std;

int main(void)
{
    int* p;
    *p = 200;
    cout << *p << endl;
    return 0;
}      

p就是一個野指針,它指向的是一塊随機的記憶體位址,編譯器無法給一個随機的位址指派200

改正

#include<iostream>

using namespace std;

int main(void)
{
    int a = 0;
    int* p=&a;
    *p = 200;
    cout << *p << endl;
    return 0;
}      

或者

#include<iostream>

using namespace std;

int main(void)
{
    int* p = new(int);
    *p = 200;
    cout << *p << endl;
    delete(p);
    char ch = getchar();
    return 0;
}      

空指針可以接收各種類型的指針,但是在接受的時候要強轉成空指針,用的時候再轉回來

#include<iostream>

using namespace std;

int main(void)
{
    int a = 10;
    void* p = (void*)&a;
    cout << *(int*)p << endl;
    return 0;
}      

繼續閱讀