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);