7月25日 學習日誌(指標與陣列)

2021-08-21 20:43:06 字數 3453 閱讀 4381

一、指標的定義

1.指標是變數的一種,裡面是乙個位址。單元的位址就是指標內容;

所有型別的指標長度都是4位元組;

2.定義指標變數:(1) char *str = "hello";   //str指向hello字串

(2) int a = 1;

int *p = &a;

* 的含義:定義時用* :表示後面的變數是乙個指標

使用時用* :表示取值

例如:交換a, b的值

#include

void swap(int *x, int *y)

int main()

二、指標與變數

1.指標運算

(*p1)++, *p1++的區別:

(*p1)++是p1的值加1; 

*p1++是先求*p1的值,然後再p1++,指標指向下乙個元素; 

利用指標運算實現庫函式strcpy :

#include

char *mystrcpy(char *str, const char *ptr)

int main()

2.不同型別與0值比較

int  *p=null;   //空指標 

(1)int型:if(n == 0)或者 if (n != 0)

(2)float型:const float epsinon = 0.00001;

if ((n >= - epsinon ) && (n <= epsinon ))

(3)bool型別:if (flag)或者if ( ! flag)

(4)指標型別:if (n == null)或者if (n != null)

3.指標變數的使用步驟

1. 定義指標變數;

2.給指標變數賦位址;

3.正常使用指標進行運算;

例如:

#include#include#include //malloc的標頭檔案int main()

strcpy(fp, "helloworld");

printf("%s\n", fp);

return 0;

}

三、指標與陣列

1.陣列元素和指標

陣列的指標是指數組的起始位址,陣列元素的指標是陣列元素的位址。

例如:int a[10];  //定義a為包含10個整型資料的陣列

int *p;      //定義p為指向整型變數的指標

p=&a[0];     //把a[0]元素的位址賦給指標變數

#include

int main()

;

int *p = a;

for(i = 0; i < 10; i++)

printf("\n");

char *q = "hello";

for(i = 0; i < 5; i++)

printf("\n");

return 0;

}

2.printf("%d ", *(p + i));   //指標法訪問陣列

printf("%d ", a[ i ]);     //陣列下標法訪問陣列

3. 指標陣列

char *string = ;   //本質是陣列, 每個元素都是乙個指標

printf("%s\n", string[0]);    //通過陣列方式訪問指標

printf("%s\n", string[1]);

printf("%s\n", string[2]); 

若為printf("%s\n", string); 則列印亂碼。因為string是陣列名,也是陣列首元素的位址,陣列首元素是指標。

4. int a[5] = ;

int *p1 = (int*)(&a + 1);        //列印隨機值 。&a是陣列的位址,+1加20位元組

int *p3 = (int*)(a + 1);          //列印2 。 a是陣列名也是陣列元素的首位址,a+1指向下乙個元素

附上今日筆記:

7月19日學習 指標與陣列

函式的指標 可通過該指標呼叫該函式 定義 函式指標是函式的物理入口位址,即在編譯時,分配的物理入口位址。格式 型別 指標變數名 int p 這裡的型別是指函式返回值型別。呼叫 指標變數名 實參列表 p 或者p 對於函式指標,p p n等等無意義。函式返回指標的注意事項陣列 同質,有序,連續。注意下標...

7月25日學習日誌 張蓉婷

今日學習任務 用韌體庫點亮乙個燈,stm32韌體庫程式設計及gpio,rrc時鐘,systick系統定時器 今日任務完成情況 詳細說明本日任務是否按計畫完成,開發的 量。今日任務已按計畫完成。在老師的指導下學會使用韌體庫程式設計實現led燈的點亮和閃爍。systick定時器設定和實現 rrc系統時鐘...

7月13日學習日誌

學習日誌 姓名 郭富民 日期 2018 7 13 今日學習任務c語言的結構體,聯合體,鍊錶 今日任務完成情況c語言的結構體,聯合體的任務基本完成,能跟上老師的進度。今日開發中出現的問題彙總 結構體在使用時,只是宣告,不是定義,沒有分配空間。struct student就是一種資料型別。結構體在記憶體...