簡單講述我對指標和結構體的一些理解

2021-10-03 06:31:26 字數 1219 閱讀 7031

大家可以寫幾行**好好想想這些東西。編譯出來看就很好理解了。

指標概述

指標在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 程式的預設呼叫方式,每乙個呼叫它的函式在返回...