大家可以寫幾行**好好想想這些東西。編譯出來看就很好理解了。
指標概述
指標在c語言可以理解為乙個物件,利用位址,她的值直接向存在電腦記憶體儲存器中的另乙個地方的值。可以說,位址指向該單元變數,所以將位址形象化的稱為「指標」。我們可以理解為指標是個變數,存放記憶體單元的位址。指標是乙個存放位址的變數。
指標的大小在32位平台是四個位元組,在64位平台是八個位元組。
指標型別
指標一般存放什麼型別的變數,指標就定義為什麼型別。
eg: int* char* flaot* /等等都可以定義指標變數
指標型別的意義就在於當指標±整數時,決定指標向前或者向後走一步的距離有多大(位址的變化)
指標型別也同樣決定了,對指標解引用的時候有多大的許可權(可以操作幾個字元).char* /的指標解引用只可以訪問乙個位元組,而int* /的指標的解引用就可以訪問四個位元組。
野指標
野指標可以理解為錯誤的使用指標。使指標指向的位置是不可知的。
規避野指標出現的方法:指標初始化;小心指標越界;指標指向空間釋放即使置null;指標使用之前檢查其有效性。
指標與陣列
int arr[10] = ;
int* p = arr;
陣列名表示的是陣列首元素的位址。
可以直接通過指標來訪問陣列。
二級指標
int a = 10;
int *pa = &a;
int **ppa = &pa;
可以理解為 *paa就是對ppa中的位址進行解引用,這樣找的pa,*ppa其實訪問的就是pa。
可以簡單的理解為二級指標就是對一級指標位址的訪問,就是指向指標的指標。
結構體
結構是一些值的結合,這些值稱為成員變數,結構體的每個成員都可以是不同型別的變數。
例如描述乙個學生:
typedef struct stu
stu;
結構體成員的訪問:
訪問方式:
void printf (struct stu* ps)
strunct stu s;
strcpy(s.name,"zhang");
s.age = 20;
若是想深入了解,多寫**就行了。 我對指標的一些總結
首先我很推薦看華清裡面講的c指標還有c語言中文網裡面對c指標的講解。指標變數加一是向位址大的方向移動乙個目標資料 陣列名相對於陣列元素都是進了指標一級 指標陣列很適合操作二維陣列 指標陣列的陣列名其實就是個二級指標 下面摘自c語言中文網,理解 int 在不同的場景下有不同的作用 可以用在指標變數的定...
sort函式的一些簡單用法(和結構體結合)
中文名 sort函式 標頭檔案 include using namespace std 用途 對給定區間所有元素進行排序 所屬範疇 c sort函式有三個引數 1 第乙個是要排序的結構體 陣列 的起始位址。2 第二個是結束的位址 最後一位要排序的位址的下一位址 3 第三個引數是排序的方法,可以是從大...
我對 stdcall和 cdecl的一些了解
stdcall,被這個關鍵字修飾的函式,其引數都是從右向左通過堆疊傳遞的 fastcall的前面部分由ecx edx傳 函式呼叫在返回前要由被呼叫者清理堆疊。實質 函式呼叫約定。注 ecx是計數器,edx是用來存放整數除法產生 的餘數。cdecl是c和c 程式的預設呼叫方式,每乙個呼叫它的函式在返回...