C++指針
C++的指針是很容易學習和有趣的。一些C++任務與指針進行更容易執行C++任務,如動態存儲器分配,不能冇有它們來執行。
正如你所知道的每個變量是一個內存位置,每個存儲單元都有其定義的地址,可以用符號(&)運算符,它表示一個內存地址進行訪問。考慮將打印定義的變量的地址如下:
#include <iostream> using namespace std; int main () { int var1; char var2[10]; cout << "Address of var1 variable: "; cout << &var1 << endl; cout << "Address of var2 variable: "; cout << &var2 << endl; return 0; }
當上述代碼被編譯和執行時,它會產生導致一些如下:
Address of var1 variable: 0xbfebd5c0 Address of var2 variable: 0xbfebd5b6
什麼是指針?
指針是一個變量,其值是另一個變量的地址。就像變量或常量,必須聲明一個指針,然後才能使用它。指針變量聲明的一般形式是:
type *var-name;
在這裡,類型(type)為指針的基本類型;它必須是一個有效的C++類型和var-name是指針變量的名稱。用來聲明指針星號是用乘(星號)。然而,在該語句中的星號被用來指定一個變量作為一個指針。以下是有效的指針聲明:
int *ip; // yiibaier to an integer double *dp; // yiibaier to a double float *fp; // yiibaier to a float char *ch // yiibaier to character
所有的指針的值的實際數據的類型,無論是整數,浮點數,字符或以其他,都是相同的,代表存儲器地址的長十六進製數。不同數據類型的指針之間的唯一區彆是變量的數據類型或常數,指針則是指向。
使用C++指針:
有幾個重要的業務,我們使用指針非常頻繁地操作。 (a)我們定義一個指針變量(b)分配一個變量的指針和(c)的地址終於在指針變量的可用地址來訪問的值。這是通過使用一元運算符*返回位於其操作數所指定的地址的變量的值完成的。下麵的例子利用這些操作:
#include <iostream> using namespace std; int main () { int var = 20; // actual variable declaration. int *ip; // yiibaier variable ip = &var; // store address of var in yiibaier variable cout << "Value of var variable: "; cout << var << endl; // print the address stored in ip yiibaier variable cout << "Address stored in ip variable: "; cout << ip << endl; // access the value at the address available in yiibaier cout << "Value of *ip variable: "; cout << *ip << endl; return 0; }
當上述代碼被編譯和執行時,它會產生一些結果如下:
Value of var variable: 20 Address stored in ip variable: 0xbfc601ac Value of *ip variable: 20
C++指針的詳細信息:
指針有很多,但很容易理解的概念,它們在C++編程非常重要。有以下幾個重要指針概念,一個C++程序員應該明確:
概念 | 描述 |
---|---|
C++ Null 指針 | C++中支持null指針,這是一個常數為零在幾個標準庫中定義的值 |
C++ 指針運算 | 有一些可以對指針使用四則運算符: ++, --, +, - |
C++ 指針VS數組 | 有指針和數組之間有密切的關係。讓我們來對比一下? |
C++ 指針數組 | 可以定義數組來存儲一些數字的指針 |
C++ 指針的指針 | C++可以讓指針指向指針 |
傳遞函數指針 | 通過引用或地址傳遞參數均使傳遞的參數將在調用函數被調用函數改變 |
從函數返回指針 | C++允許函數返回一個指向局部變量,靜態變量和動態分配內存 |