c語言學習day03

2021-09-19 12:07:03 字數 1046 閱讀 4977

const char *p = "hello world";//表明該字串內容不可修改

char * const p;//操作硬體時用到,例如操作lcd的快取,指向的位置不可變,但位置中的畫素的資料在不斷重新整理,用來顯示不同顏色

const char * const p;//常用來描述rom

volatile主要用來修飾指標,防止被優化。例如:volatile char *p

int *p;p+1的值是p+sizeof(int);和char *p;p+1的值不同,是p+sizeof(char)

指標不是同型別的比較沒有意義,例如:int *p和char *p的值的大小比較沒有意義

陣列名是常量,int a[100],陣列名不會放到等號左邊,即a=***

char buf[100];

buf = "hello world";//這行**是有問題的,buf是常量

a[-100]也是可以的,只是偏移方向不同

int a[100] = {};//cpu本身不支援空間拷貝空間的運算,例如這行**,但編譯器會把這行**編譯為a[0] = ***;a[1] = ***;...

char buf[10] = "abc";記憶體中有兩份abc,乙份在常量區,乙份在棧中

char buf = "abc";buf的長度為4,注意末尾有『\0』

char buf[10] = "abc";

buf = "hello world";//該行錯誤,buf是常量標籤,不能再次賦值

如果想對buf再次賦值,只能逐一賦值,即buf[0] = 'h',buf[1]='e'...buf[n+1] = 0

字元拷貝函式的原則就是上面的逐一拷貝,一遇到0,拷貝就結束

strcpy(buf,"hello world");//帶str的函式會把字串末尾的『\0』一同拷貝過去

strcpy拷貝的時候,如果源字串的長度很大,目的字元陣列長度不大,就會拷貝滿,並且把字元陣列挨著的記憶體也拷貝成資料,如果此時挨著的記憶體有重要資料,就會覆蓋。這樣就導致記憶體洩漏,所以strcpy在工程中嚴禁使用。此時就要使用strncpy

C 學習筆記 day03

為準備複試上機而開始記筆記,僅記錄新知識點,昨天做的太少了,今天多做一點 include intstrtoint char str1 return result sign 不過oj可能會報錯說 strrev函式並未定義 既然如此,那就重寫一下字串反轉函式 void strrev char s str...

c 基礎學習Day03

計算機語言和程式設計方法的發展day03 最初的計算機語言 機器語言 由二進位制 構成 計算機硬體可以識別 可以表示簡單的操作 例如 加法 減法 資料移動等等 組合語言 將機器指令對映為助記符 如add sub mov等 抽象層次低,需要考慮機器細節。高階語言 關鍵字 語句容易理解 有含義的資料命名...

c 學習day03 迴圈

迴圈結構的特點 迴圈條件和迴圈操作 迴圈類別 1.while迴圈 int i 0 while 表示式內容i 100 判斷有多少個位數之和等於7的數 例如 43,4 3 7 int i 100 int a 0 while i 10000 i console.writeline 有個 表示式內容為真執行...