C語言——基礎語法學習

1. 數據類型

  • char字符型,short,int,long,long long整型

在8/32位機中:
sizeof unsigned char == 1
sizeof unsigned short == 2
sizeof unsigned int == 4
sizeof unsigned long == 4
sizeof unsigned long long == 8
在64位機中:char,shot,int,long long與8/32位機一樣,只有unsigned long在32、64位機上結果不同,爲8位。

  • 枚舉類型

把可能的值全都列舉出來,變量的值只限於列舉出來的值的範圍,所有值唯一。例如:
enum data{A=1, B, C=4, D};            //數值依次爲 {1,2,4,5}

2. 一些關鍵詞

  • 靜態變量static

class裏的變量若需要一個同一的變量全局使用,可將該變量定義成static

3. C語言中某些函數的用法

  • sizeof()和strlen()的區別
           strlen指字符的長度           sizeof指文件或者數據佔的內存(字節)
           例:   char str[20]="0123456789";
        int a=strlen(str);             //a=10;
        int b=sizeof(str);             //b=20;
         int b=sizeof(str);             //b=20;
  • snprintf函數用法

       int snprintf(char *buff, size_t n, const char * format, ...);

      函數說明:將可變個參數(...)按照format格式化成字符串,然後將其複製到buff中,最多從(...)中拷貝n-1個字符到目標串中,然後再在後面加一個0。所以如果目標串的大小爲n 的話,將不會溢出。

      函數返回值:若成功則返回欲寫入的字符串長度,若出錯則返回負值,例:

snprintf(s,100,"%.*S",3,"abcd");

  s的值爲abc,      %.*s 表示有兩項, 第一項指定了長度,第二項則是%s的內容,所以取前三位

  • memcpy函數用法

void *memcpy(void *dest, const void *src, size_t n);

函數說明:從源 src 所指的內存地址的起始位置開始拷貝n個字節到目標 dest 所指的內存地址的起始位置中

  • memcmp函數用法

int memcmp(const void *buf1, const void *buf2, unsigned int count);

函數說明:比較內存區域buf1和buf2的前count個字節。

函數返回值:當buf1<buf2時,返回值小於0

                      當buf1==buf2時,返回值=0

                      當buf1>buf2時,返回值大於0

 

注意:C語言是區分大小寫的

3. 串口打印

(1)在單片機應用中,使用printf語句通過串口輸出

      使用之前必須包含相應的頭文件:#include < stdio.h >

int fputc(int ch, FILE *f)//重定向,讓printf輸出到串口
{
    USART_SendData(USART1, (uint8_t) ch);

    while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
    return ch;
}

              (1)、打印字符串:printf("hello world!\n");

              (2)、打印數字或變量:printf("a = %d\n", a);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章