2019年12月9日
- 運算符(可是要返回值的!!!!)
1)算術(shù)運算符(=(賦值)、+(加法)、-(減法)、-和+(符號運算符)、?(乘法)、/(除法)、%(取模))。進行算術(shù)運算。返回計算結(jié)果!!!!優(yōu)先級與數(shù)學(xué)優(yōu)先級一樣。涉及到變量的類型轉(zhuǎn)換。
賦值運算符拓展+=、-=、*=、/=、%=。
2)關(guān)系運算符(>、>=、<、<=、!=、==)進行大小比較,返回真1或假0。具有返回值!!!!!
3)邏輯運算符(&&(且)、||(或)、!(非))。根據(jù)成員間的關(guān)系,進行邏輯判斷!返回真1假0值。
4)條件運算符(?:)。三目運算符。(a>b)?a:b,真則返回第一個數(shù)a,假則返回第二個數(shù)b。
5)位運算符
(1)位邏輯運算符(~(按位取反)、&(按位與)、|(按位或)、^(按位異或))用法:掩碼、打開位、關(guān)閉位、轉(zhuǎn)置位、查看一位的值。
(2)移位運算符(<<(左移運算符)、>>(右移運算符)。
6)其他運算符。
(1)sizeof運算符,返回unsigned char類型size_t
(2)逗號運算符(,)。一、保證被它分開的表達式按從左到右的次序進行計算;二、整個逗號表達式的值是右邊成員的值。注意,依然是有返回值的,看你自己賦不賦了!例如x=(y=3,(z=++y+2)+5);,x=11。又例如,a=249,666;那么a等于666.
(3)自增運算符和自減運算符,前綴,使用前值已變化,再使用;后綴,先使用,才變化。
- C語言的保留標(biāo)識符34?32?
1)auto、const、extern、enum、restrict、static、volatile。7
2)char、double、float、int、long、register、short。7
3)unsigned、signed。2
4)typedef、struct、union。3
5)break、case、continue、default、do、else、for、goto、if、return、switch、while。12
6)inline、void。2
7)sizeof。1 - 不確定循環(huán)與計數(shù)循環(huán),條件循環(huán)。
1)必須初始化一個計數(shù)器;
2)計數(shù)器與某個有限的值比較;
3)每次執(zhí)行循環(huán),計數(shù)器的值都要遞增。
while、for等大同小異。
不確定循環(huán):交互式有關(guān)。
計數(shù)循環(huán):計數(shù)器變量。
條件循環(huán):直到滿足某條件即可。 - C語言控制語句:循環(huán)、分支與跳轉(zhuǎn)
嵌套循環(huán);
循環(huán)輔助手段:continue和break
多重選擇:switch和break
goto語句 - 字符輸入輸出和輸入確認(rèn)
(1)單字符I/O:getchar()和putchar()。
緩沖區(qū)
1)為什么需要緩沖區(qū)?將若干字符作為一個塊傳輸比逐個發(fā)送這些字符耗費的時間少。其次,可以使用鍵盤更正功能來修改錯誤。
2)沒有優(yōu)劣之分,緩沖輸入與非緩沖輸入具有各自的用途。在游戲中,需要立即執(zhí)行某個命令,不需要緩沖區(qū)。
(2)關(guān)鍵概念
C程序?qū)⑤斎胍暈橐粋€外來字節(jié)流。getchar()函數(shù)將每個字節(jié)解釋為一個字符編碼。scanf()函數(shù)以同樣的方式看待輸入,但在其轉(zhuǎn)換說明符的指導(dǎo)下,該函數(shù)可以將字符轉(zhuǎn)換為數(shù)值。許多操作系統(tǒng)都提供重定向,這就使您能夠用文件代替鍵盤作為輸入,或用文件代替顯示器輸出。
1)輸入重定向
2)輸出重定向 - 字符串和字符串函數(shù)
(1)字符串輸入
1)創(chuàng)建存儲空間
2)輸入函數(shù)
gets()函數(shù)
gets()函數(shù)的構(gòu)造
char *gets(char * s) {...return(s); }fgets()函數(shù)
#include<stdio.h> #define MAX 81 int main(void) {char name[Max];char * ptr;printf("Hi,what's your name?\n");ptr=fgets(name,MAX,stdin);//從鍵盤上讀數(shù)據(jù)時,可以使用stdin作為該參數(shù))printf("%s?Ah!%s!\n",name,ptr);return 0; }gets()的一個不足之處是它不檢查預(yù)留存儲區(qū)是否能夠容納實際輸入的數(shù)據(jù)。多出來的字符串簡單地溢出到相鄰地內(nèi)存區(qū)。fgets()函數(shù)改進了這個問題,它能夠讓你指定最大讀入字符數(shù)。由于fgets()是為文件I/O而設(shè)計,在處理鍵盤輸入時就不如gets()那么方便。
scanf()函數(shù)
scanf()和gets()主要的差別在于它們?nèi)绾螞Q定字符串何時結(jié)束。
scanf()更基于獲取單詞而不是獲取字符串,而gets()函數(shù),正如你所看到,會讀取所有的字符,直到遇到第一個換行符為止。
(2)字符串輸出
puts()
注意每個字符串都是單行顯示。與printf()不同,puts()顯示字符串時自動在其后添加一個換行符。
fputs()
fputs()函數(shù)是pets()的面向文件版本。
printf()
如同puts()一樣,printf()需要一個字符串地址作為參數(shù)。printf()使用起來沒有puts()那么方便,但是它可以格式化多種數(shù)據(jù)類型,因而更通用。區(qū)別之一就是printf()并不在新行上輸出每一個字符串。相反,你必須要另起一行。
- 自定義字符串輸入/輸出函數(shù)
不一定要使用標(biāo)準(zhǔn)C庫的函數(shù)進行輸入和輸出,如果不具備或者不喜歡它們,你可以自行定義,在getchar()和putchar()的基礎(chǔ)上建立自己的函數(shù)。
#include<stdio.h> void put1(const char * string) {while(*string!='\0')putchar(string[i++]); }- 字符串函數(shù)
strlen()
返回字符串長度
strcat()
接受兩個字符串參數(shù)。它將第二個字符串的一份拷貝添加到第一個字符串的結(jié)尾,從而使第一個字符串成為一個新的組合字符串,第二個字符串并沒有改變。
strncat()
strcat()函數(shù)并不檢查第一個數(shù)組是否能夠容納第二個字符串。如果沒有為第一個數(shù)組分配足夠大的空間。多出來的字符溢出到相鄰存儲單元時就會出現(xiàn)問題。
strcmp()
把用戶的響應(yīng)和一個已有的字符串進行比較。兩個字符串相同時,返回0。
兩個字符串比較返回值。
strcmp("A","A") is 0 strcmp("A","B") is -1 strcmp("B","A") is 1 strcmp("C","A") is 2 strcmp("Z","a") is -7 strcmp("apples","apple") is 115ASCII碼相減。
strncmp()
strcmp()函數(shù)比較字符串時,一直比較到找到不同的相應(yīng)字符,搜索可能要進行到字符串結(jié)尾處。而strncmp()函數(shù)比較字符串時,可以比較到字符串不同處,也可以比較完由第三個參數(shù)指定的字符數(shù)。
strcpy()
復(fù)制字符串,可以使用strcpy()函數(shù)
strncpy()
strcpy()和gets()函數(shù)同樣都有一個問題,那就是都不檢查目標(biāo)字符串是否容納的下源字符串。復(fù)制字符串使用strncpy()比較安全,它需要第三個參數(shù)來指明最大可復(fù)制的字符數(shù)。
sprintf()
sprintf()函數(shù)是在stdio.h而不在string.h里聲名。它的作用和printf()一樣,但是它寫到字符串里而不是寫到輸出顯示。因此,它提供了把幾個元素組合成一個字符串的一種途徑。sprintf()的第一個參數(shù)是目標(biāo)字符串的地址,其余的參數(shù)和printf()一樣:一個轉(zhuǎn)換說明符字符串,接著是要寫的項目列表。
總結(jié)
(1)字符串輸入
1)創(chuàng)建存儲空間
2)gets()函數(shù)
3)fgets()函數(shù)
4)scanf()函數(shù)
(2)字符串輸出
1)puts()函數(shù)
2)fputs()函數(shù)
3)printf()函數(shù)
(3)利用putchar()和getchar()函數(shù)自定義字符串輸入/輸出函數(shù)
(4)字符串函數(shù)
1)strlen()函數(shù)
2)strcat()函數(shù)
3)strncat()函數(shù)
4)strcmp()函數(shù)
5)strncmp()函數(shù)
6)strcpy()函數(shù)
7)strncpy()函數(shù)
C字符串是一串以空字符’\0’結(jié)束的char類型值。字符串可以放在字符數(shù)組中,也可以用字符串常量表示。在字符串中,字符串(除空字符)是被包含在雙引號中的。編譯器為它加上空字符。因此,存儲在“joy”時有4個字符:j、o、y和\0。strlen()函數(shù)測得字符串長度不包括空字符。
函數(shù)利用指向字符串第一個字符的指針來標(biāo)識它所作用的字符串。通常,相應(yīng)的實際參數(shù)可以是數(shù)組名、指針變量或雙引號中的字符串。這些情況下,傳遞的都是第一個字符的地址。一般來說,并不需要傳遞字符串的長度,因為可以根據(jù)標(biāo)志結(jié)束的空字符來確定字符串結(jié)束。
gets()和puts()函數(shù)分別讀取一行輸入和進行一行輸出。都是stdio.h里的函數(shù)
總結(jié)
以上是生活随笔為你收集整理的2019年12月9日的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 展望未来电力行业发展
- 下一篇: anaconda离线环境迁移(舍弃繁文缛