指標的問題

2022-07-22 18:30:13 字數 827 閱讀 3191

我們都知道指標是用來操作記憶體空間的,我們可以簡單的拿來改變某個變數的值

如:我們定義乙個int a = 5;

然後定義乙個指標int *p;

將change(&a);利用這個呼叫函式change();

用函式int change(int *p)

輸出結果會是:a = 10;

這就是利用乙個簡單的指標來改變了記憶體空間的值將5 改成了10,這就進一步說明指標是用來改變記憶體空間的值的。

接下來我們討論*p,與**p的問題

很容易理解:*p是指標,**p是指標的指標嘛,是的,但我們要知道,第乙個*p是拿來改變某乙個記憶體空間的值的

如剛講的記憶體空間a一樣,而**p 是改變指標的指標的記憶體空間的,即改變指標的指標的指向問題,因為改變的是

該指標的的記憶體的值,即,指標的指向問題就改變了,當我們申請記憶體空間的時候會遇到兩種情況:

*head:

head = (slnode*)malloc(sizeof(slnode));

**head:

*head = (slnode*)malloc(sizeof(slnode));

這兩種情況不一樣,第一種情況,你若使用在初始化函式中,你需要return head;這樣你才能獲得該位址;而

第二種情況就不用了因為你操作的是*head這個位址空間,改變了其值,使其指向改變,但你仍然知道你傳入

的位址,這樣你就可以繼續找到,操作該空間了。

下面舉了乙個例子:

#include

using namespace std;

int change(int **p,int *p2)

int main()

this指標的問題

let宣告變數會形成塊級作用域,且不存在宣告提公升,而var存在宣告提公升。所以當使用let宣告變數時,不存在宣告提公升,length屬性實際上並沒有新增到window物件中。從下面的例子可以看出 是不是奇怪為啥輸入 fn,1 兩個引數,是不是賊奇怪為什麼不是10和5或者5和5?哈哈,慢慢解釋。最先...

指標的指向問題

最近開始複習資料結構,寫了個測試程式時發現了乙個問題。typedef struct lnode lnode,linklist int main lnode l initlist l void initlist linklist pl pl linklist malloc sizeof lnode p...

指標 1的問題

指標 1 並不是指標代表的位址值 1.char a a char p a cout void p void p 1 輸出 0012ff33 0012ff34 p指向的是乙個字元,p 1就是移動乙個字元大小,乙個字元就是乙個位元組,所以p 1 代表的位址就比 p 代表的位址大1。int i 1 int...