第五天LinuxC實訓

2021-10-07 22:03:51 字數 1770 閱讀 2056

位運算

預處理指標陣列

一、位運算

乙個例子

輸入乙個整數,將其轉化為32位二進位制的表現形式:

其中我認識到了unsigned int的巧妙之處了,此時我也要注意後面列印的資料型別是%u

對於掩碼這個問題感覺很高階,以前搞微控制器遇到過,oled的螢幕要像顯示漢字要掩碼庫。假期搞過,並且成功了。

今天最讓我感到奇特的是!

1.按位與運算可清零

2.按或與運算可置位

3.按異或運算可取反,甚至變數交換!!!

示例a=a^b;

b=a^b;

a=a^b;

還從老師那裡知道了

a=a+b;

b=a-b;

a=a-b;

個人覺得這是我最大收穫。

二個例子

輸入十進位制轉化為十六進製制

我記住了這個

char * int2hex(unsigned int num)

二、預處理

巨集定義可以提高**的移植性和維護性

巨集函式省去了函式呼叫的時間,同樣省去了形參分配空間和引數

巨集函式是用編譯時間換記憶體空間和執行時間

此外,我們在頻繁呼叫且短小的函式時候用巨集函式

通過老師拓展我進一步了解了函式的呼叫過程,今天對此有了新的認識。

值得注意的是標頭檔案的重複定義此時我可以在.**件裡加上

#ifndef _func_h

…#endif

或者可以用

#pragma once清空一次記憶體

分享一下老師的檢查錯誤的**

printf("%s:%d\n",func,line);

三、指標

1.指標是什麼,他是乙個變數,儲存的是位址,可以直接訪問操作位址(硬體)

2.指標的型別根據儲存位址的型別

3.認識取值運算子和取位址運算子

4.多維指標的作用是儲存前一維指標變數的位址

5.相同型別的指標才能賦值

6.萬能指標void * 可以接受任何型別指標的值,但不能取值運算

7.野指標很神奇!

四、陣列

我了解了一位陣列名儲存的是陣列首元素位址,而陣列名是乙個指標變數。二維陣列名儲存的是首個一維陣列的位址,二維陣列的單位是乙個一維陣列

二維陣列和一維陣列的關係如下圖

最後介紹一下如何定義陣列指標

int (*p)[max_size]=&a

作業

#include

#include 「stdio.h」

void print1(char *ptr)

void print2(char (*ktr)[100])

}void print3(char (*str)[2][100])

}void print4(char **ytr)

}int main()

;char str[2][2][100] = , };

char *ytr[3] = ;

print1(ptr);

print2(ktr);

print3(str);

print4(ytr);

}參考:

梁庾老師

實訓第五天

姓名 祖東科 日期 2018.07.13 今日任務完成情況 今日開發中遇到的問題彙總 跟著老師基本沒遇到 有問題基本當場解決 今日未解決問題 邏輯問題 今日開發收穫 結構體的位元組計算,struct student s2 結構體指標 野指標不能直接寫入 結構體在記憶體中是連續儲存的,偏移量距離結構體...

實訓第五天日誌

學習日誌 姓名 成盛 班級 通卓161 今日學習任務 結構體聯合體 鍊錶記憶體管理 今日任務完成情況 基本完成 今日開發中出現的問題彙總 不明白如何轉化大小端問題 今日未解決問題 無今日開發收穫 1.宣告結構體型別一般形式 struct 結構體名 struct student 結構體陣列 順序結構 ...

物聯網實訓第五天

專案名稱 蘇嵌實訓 嵌入式 linux c 第 5 天 今日進度以及任務 學習了c語言的基本知識,了解了c語言指標的運用,了解了c語言的輸入輸出的運用複習陣列,指標,陣列指標,函式指標,函式指標陣列,學習了右左法則複習了printf,scanf,i 以及 i,複習了迴圈語句,條件語句,break和c...