使用指標要注意的地方 運算子優先順序

2021-08-01 20:04:59 字數 872 閱讀 6736

二級指標的用法

最容易犯錯的地方 *號和的優先順序:

int **pp;

int *length; // *length–; 這種寫法也很危險。先取出內容 然後指標後移,而不是像我們想的 取出裡面的內容–;相當於*length; length – ; 而不是讓內容減一

我們想引用乙個一維陣列裡的元素 我們可能會這麼寫*pp[i]

這裡是很多人犯錯的地方,由於中括號優先順序高 ,導致指標指向一塊不屬於我們的空間,這時候程式就會中斷 正確的寫法是(*pp)[i];

下面是乙個簡單的demo

#include 

using namespace std;

//簡單方式

//找到第乙個要刪除的數

int findfirstnum(int * p, int

length, int delnum)

}return -1;

}//刪除的方式採用記憶體縮減的方法,刪除乙個就將所申請的記憶體-1

void deletenum(int

**pp, int

*length, int delnum)

*pp = (int

*)realloc(*pp, sizeof(int)*(

*length - 1));

*length -= 1;//不要寫成*length-- }}

}int main()

else

}deletenum(&p, &lenth, 4);

for (int i = 0; i < lenth; i++)

system("pause");

}

位運算子 需要注意的地方

本人第乙個部落格,以後會經常寫 此時的我就像戲台上的老將軍 以免第二次犯同樣的錯誤。因為考研的原因,好久沒有coding了,略感生疏。瘋玩了十幾天,決定拿起書本,紮實地重新看一遍專業書。從開始學習程式設計起,就不是很注重位運算,因為覺得可以用別的方法代替。後來發現有些東西用位運算處理更有效率。這裡主...

C 運算子過載需要注意的地方

有時候自己寫乙個類,需要過載運算子,但對於一些操作符 如 等 可以在類裡寫,也可以在類外寫。那麼 c 編譯器會去怎麼呼叫呢?首先,我們知道,過載 機制可以允許多個函式有相同的函式名,但引數列表必須不同。c 編譯器經過名字改編 name mangling 可以在呼叫時依據所傳實參找到 最符合 的函式實...

過載及運算子過載需要注意的地方

運算子過載 operator overload 是c 的乙個重要的新特性,它使得程式設計師把c 運算子定義擴充套件到運算元是物件的情況.運算子過載的目的是使c 程式更加直觀,更易懂.但這種方便有時候也帶來一些潛在的危險 運算子過載和普通的過載一樣 作用域相同,函式名字相同,但引數不同 引數個數,引數...