日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

C++ 地址和指针

發布時間:2025/3/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++ 地址和指针 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C++ 地址和指針

開發工具與關鍵技術:C++、VisualStudio 作者:何任賢 撰寫時間:2019年04月10日 C++的地址并不是我們日常生活中的地址,那么它是什么呢,它是指我們內存中地址,就內存的位置,我們C++中的變量,常量都是有自己地址的,不過只有有標識的才有地址,下面我們輸出一下常量和變量的地址。

#include
using namespace std;
void main()
{
const int a = 10; int b = 10;
cout << “a的地址:” << &a << “\n”
<< “b的地址:” << &b << “\n”;
}
這是代碼,&符號在這里是取地址的意思,就是獲取該標識所在內存地址的意思。下面它們的地址.

地址既然是它們所在內存的位置標識,那么我們是不是下一次就可以通過這個地址來獲取a和b的值呢?其實并不可以,因為只有在程序運行的時候編譯器才會給它們分配內存,所以并不是,每次內存分配都是不一樣的,那么在程序運行時可不可以改變標識的地址呢?其實并不可以,為什么呢?因為地址本來就是一開始就分配好,那么我們只能改變地址存儲的值,而不是地址,為了驗證每次內存分配都是不一樣的,我們下面有代碼和結果,至于改變某個標識的地址,這個C++沒有相關代碼。

我們通過結果可以知道,編譯器每一次分配的內存都是不一樣的,不管它是常量還是變量,既然每一次都是不一樣的地址,那這個地址有什么用呢?我們可以看一下標題,地址和指針,為什么是地址和指針,很簡單指針就是用來操作地址的,指針也是一種數據類型,它是用來存儲地址的,它可以通過地址來獲取該地址的值,那么它怎么獲取,為什么只有指針可以通過地址獲取地址的值呢?下面我們來看代碼和結果。
#include
using namespace std;
void main()
{
int a = 10; int *b ;
b = &a;
cout << “a的地址:” << &a << " a的值:" << a << “\n”
<< “指針b的值:” << b << " 指針b解地址:" << *b << “\n”
<< " 指針b的地址:" << &b << “\n”;
}

通過代碼和結果我們看到指針b的值和a的地址是一樣的,這就是為什么我說指針是用來存儲的地址的,指針b解地址,解的是那個地址呢,解的是它存儲的地址而不是它的自己的地址,它地址解出來的和a的值是一樣,上面我們還說過只有指針才能解地址是吧,我們看下面的截圖就知道了。(*符號在變量聲明時是修飾該變量是一個指針,在非聲明時一般是解址符)

在截圖中我給a賦了上面的地址值,加上0x是表示該值是一個十六進制的數,地址是以十六進制顯示的,然后我嘗試對a進行解地址,編譯器就報錯了,這錯的意思解址符的操作對象必須是指針。
那么指針操作的是地址一個變量就一個地址,并不能顯示指針對地址的操作,那么什么凸顯指針對地址的操作呢,這個時候我們要加入一個數組,為什么是數組呢?因為數組在內存中是一片連續的內存,雖然不只數組一個可以體現,但是數組大家都比較熟悉。下面數組的下標操作和指針對數組的操作。
#include
using namespace std;

void main()
{
int a [10]; int *b;
for (int i = 0; i < 10; i++)
{
a[i] = i;
}
for (int i = 0; i < 10; i++)
{
cout << a[i] << " " ;
}
cout << “\n”;
}
上面的代碼是利用數組的下標給數組循環賦值和輸出,結果是

那么我們利用指針一樣可以獲得相同的結果,下面利用指針對數組進行賦值和輸出
void main()
{
int a [10]; int *b;
b = a;
for (int i = 0; i < 10; i++)
{
*(b + i) = i;
}
for (int i = 0; i < 10; i++)
{
cout << *(b + i) << " " ;
}
cout << “\n”;
}
輸出結果也是和上面一樣,沒有什么區別。

為什么指針也可以呢?那是因為數組是一片連續的內存對吧,那么既然是一片連續的內存,那么它們的地址肯定也是連續的,因為a數組是有十個元素的,而數組的索引是從零開始的,a 等于是a數組的第一個內存,a就是a[0]的地址,所以指針可以遍歷數組的所有元素,也就可以對數組元素的值進行改變和輸出。所有地址就是給指針來操作的。

總結

以上是生活随笔為你收集整理的C++ 地址和指针的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。