C和指標

來源:互聯網
上載者:User

標籤:char*   通過   記憶體錯誤   現在   方式   ++操作   bsp   type   精度   

一. 快速上手

1. 邏輯上刪除一段程式:

#if 0

  statements

#endif

2. printf函數:%d十進位整型值、%o八進位、%x十六進位、%g浮點值、%c字元、%s字串

 scanf函數:%d整型值、%ld長整型、%f浮點數、%lf雙精確度、%c字元、%s字串

3. char *strchr(char* dest, char src) => 返回src字元在dest字串中第一次出現的位置

 char *strstr(char* dest, char* src) => 返回src字串在dest字串中第一次出現的位置

 

二. 基本概念

1. cc -c test.c main.c將源檔案test.c、main.c編譯產生目標檔案test.o和main.o;  cc test.o main.o連結幾個目標檔案

2. int ch; while((ch = getchar()) != EOF){ putchar(ch) };

 

三. 資料

1. 可以把字串常量賦值給一個“指向字元的指標”,但是不能把字串常量賦值給一個字元數組,因為字串常量的直接值是一個指標,而不是這些字元本身。

2. char *message = "Hello World";(把message聲明為一個指向字元的指標,並用字串常量中的第一個字元的地址作為其值初始化)相當於char *message; message = "Hello World";

3. typedef出現在定義前面 char *ptr_to_char; typedef char *ptr_to_char; ptr_to_char a;將a聲明為指向字元的指標

 

四. 語句

1. while( scanf("%f", &value) == 1 && value >= 0){}

2. switch(expression) {case constant-expression:} //expression的結果必須是整型值,constant-expression必須是常量運算式

3. switch(ch)

{

  case ‘\n‘: line += 1;

      /* FALL THRU */fall through表明ch貫穿所有case,當滿足\n時除了執行line+=1,下面的words+=1和chars+=1都會執行

  case ‘ ‘:

  case ‘\b‘: words += 1;

      /* FALL THRU */

  default: chars +=1;

}

4. c不具備布爾類型,用整型運算式代替

5. c不具備任何I/O輸入/輸出語句,c也不具備任何異常處理語句,這些都是通過調用庫函數實現的。

 

五. 操作符和運算式

1. 將指定位元置1:value |= (1 << bit_number);將指定位元置0:value &= (~(1 << bit_number));判斷指定位元是否為0:value &= (1 << bit_value)

2. 逗號運算式的值為整個運算式最右邊的值。if(b-10, c+4, d>0)//從左往右依次執行,但整個運算式的值為d>0

3. 下標引用:array[ 下標 ] 等價於 *(array + (下標))

4. lexp代表左值,左值代表一個位置,rexp代表右值,右值代表一個值,在左值的地方不能使用右值,在右值的地方可以使用左值

5. 大寫轉小寫:#include <ctype.h> tolower(ch);

 

六. 指標

1. 硬體通過地址訪問記憶體位置,編譯器幫我們實現通過變數訪問記憶體位置

2. 值的類型並非值本身所固有的特性,而取決於它的使用方式

3. 變數的值就是分配給該變數的記憶體位置所儲存的值,即使是指標變數也不例外

4. 段違例:segmentation violation;記憶體錯誤:memory fault

5. 在特定數組中尋找某個特定值得函數:返回狀態值表示是否找到,如果找到,再返回指向該值得指標

6. 在對指標進行解引用操作/間接訪問之前,必須確保指標不是NULL指標

7. *(int *)100 = 25;將整型強制轉換為指向整型的指標,用於訪問裝置控制器介面

8. *p+1表示*p的值加1;*(p+1)表示p指向的地址加1後取值

9. char ch;char *cp = &ch; *cp++//①++操作符產生cp的拷貝②++操作符再增加cp的值③最後在cp的拷貝上執行間接訪問操作。

 當運算式*cp++作為左值時表示ch的記憶體位置,作為右值時表示ch的值

2. 431 109

 

C和指標

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.