1. 文件結(jié)構(gòu)
(1) 文件名:xxx.c
(2) 引用:#include <stdio.h>
(3) 常量:#define SIZE 5
(4) 全局變量:int i = 1;
(5) 函數(shù):void main() {... }
(6) 注釋:// 單行注釋,? /* 多行注釋 */
(7) 局部變量:聲明(int a;? char b[]="abc";? double c,d,e;)?賦值(a=2;)
(8) 輸入:scanf("%d", &a);
(9) 輸出:printf("%d", a);
注釋:extern int a; //引用其他文件的變量a,多個(gè)文件共用一個(gè)變量。
/* 1.1 文件名 main.c */
#include <stdio.h> /* 1.2 引用 */
#define SIZE 5 /* 1.3 常量 */
int i = 1; /* 1.4 全局變量 */
void main() { /* 1.5 主函數(shù) */
// 1.6 單行注釋:標(biāo)識符命名規(guī)范(1-9,a-z,A-Z,_),數(shù)字不能開頭,區(qū)分大小寫
/* 1.6 多行注釋:變量定義 vs中可以邊定義邊使用,vc必須函數(shù)開頭先定義全部變量 */
int a; /* 1.7 局部變量(動態(tài)變量)聲明,默認(rèn)省略[auto] */
char b[] = "abc"; /* 1.7 局部變量(動態(tài)變量)聲明,默認(rèn)省略[auto] */
double c,d,e; /* 1.7 局部變量(動態(tài)變量)聲明,默認(rèn)省略[auto] */
a = 2; /* 1.7 變量賦值 */
static int sta=1; /* 1.7 局部變量(靜態(tài)變量)聲明,只在加載時(shí)調(diào)用1次 */
scanf("%d", &a); /* 1.8 輸入:scanf輸入空格結(jié)束,gets(b)輸入可以識別空格, */
scanf("%s", b); /* 1.8 輸入:b等同于 &b[0] */
printf("%d+%d=%d \n", 1, 1, 1+1); /* 1.9 輸出:puts(b)自動換行 */
}
2. 數(shù)據(jù)類型
(1) 字符型:[signed] char (1字節(jié)有符號), unsigned char (無符號), char c = 'a';
(2) 短整型:[signed] short(2字節(jié)有符號), unsigned short(無符號), short s= 1;
(3)?整型:? ??[signed] int (2或4字節(jié)有符號), unsigned (無符號), int i= 1;?
(4) 長整型:[signed] long (4或8字節(jié)有符號), unsigned long(無符號), long l= 3L;
(5) 長長整型:long long?(8字節(jié))
(6) 單精度浮點(diǎn):float (4字節(jié)) , float f = 1.2F;
(7) 雙精度浮點(diǎn):double(8字節(jié)) , double d?= 1.2;
注釋:int轉(zhuǎn)double:double d = (double)i;?// 可省略(double)1?=> 1.000000
注釋:double轉(zhuǎn)int:int i?= (int)d;? // 1.23 => 1 下切(舍棄小數(shù)部分)
3. 符號
3.1 運(yùn)算符
(1) 算術(shù)運(yùn)算符:+, -, *, /, %? ?// ()內(nèi)計(jì)算優(yōu)先級高
(2) 賦值運(yùn)算符:=, +=, -=, *=, /=, %=
(3) 比較運(yùn)算符:>, >=, <, <=, ==, !=
(4) 邏輯運(yùn)算符:&&, ||, !
(5) 自增自減符:++, --
(6) 三元運(yùn)算符:表達(dá)式 ? 真 : 假
注釋:sizeof(變量) 取字節(jié)長度
3.2 轉(zhuǎn)義字符
(1) 退格:\b
(2) 換行:\n (自動轉(zhuǎn)換,\r\n 或 \n)
(3) 制表:\t
(4) 符號:\\? ?\?? \"? \'
(5) 空值:\0? (null)
(6) 百分號:%%
3.3 占位符
(1) 整數(shù):%d (short, int)? ?%ld (long)? ? %lld (long long)
(2) 浮點(diǎn):%f (float)? ?%lf (double)? // %.2f 保留2位小數(shù)
(3) 字符:%c (char)
(4) 字符串:%s (char [])
(5) 十六進(jìn)制:%x
(6) 內(nèi)存地址:%p
4. 流程控制
4.1 分支
(1) if分支: if (表達(dá)式) {...},? if (..) {...} else {...},? if (..) else if (..) {...} else {...}
(2) switch:switch(xx) { case 值: ...; break;? default : ...; break; }?
注釋:switch不寫break會使case后的case繼續(xù)執(zhí)行?
4.2 循環(huán)
(1) for:for?(i=0; i<5; i++) {...}
(2) while:while?(表達(dá)式) {...}
(3) do while:do {...} while (表達(dá)式);
注釋:do while有分號。break終止循環(huán),continue跳過循環(huán)。
注釋:loop: if(..) {...; goto loop; } 可以使程序跳轉(zhuǎn),一般禁止使用goto
4.3 數(shù)組
(1) 整型數(shù)組:int arr[3];? arr[0]=1;? int arr[] = {1,2,3};
(2) 字符數(shù)組:char c[]="abc";? char c[4]={'a','b','c','\0'}; // \0代表null字符串終止
注釋:二維數(shù)組 arr[2][3],三維數(shù)組?arr[x][y][x]
5. 函數(shù)
5.1 函數(shù)
(1) 有參有返回值:int sum(int x, int y) { return x + y; }? // 函數(shù)調(diào)用? int z = sum(x1,y1);
(2) 無參無返回值:void printC() {... }? //調(diào)用? printC();
注釋:函數(shù)聲明? int sum(int x, int y);? 主函數(shù) main(){...}? ?函數(shù)實(shí)現(xiàn)? int sum(int x, int y) {...}
5.2 字符函數(shù)
注釋:使用字符函數(shù),需引入? #include <string.h>
(1) 復(fù)制:strcpy( s, "abc");? // char s[10];?
(2) 拼接:strcat(s, "def");? // 在s后追加
(3) 取長:strlen(s);
(4) 比較:strcmp(s1, s2);? // 相等返回0,可用于判斷 if (strcmp(s1,s2) == 0)
(5) 字符轉(zhuǎn)數(shù)字: int a = atoi(s);? double d = atof(s);
(6) 數(shù)字轉(zhuǎn)字符:sprintf(s, "xxx%d", i) // i換%d,賦值給s
6. 構(gòu)造體
6.1 構(gòu)造體
(1) 單個(gè)構(gòu)造
定義:struct student { int id; char name[256]; }
使用:main() {? struct student data;? data.id=1; }
(2) 數(shù)組構(gòu)造
定義:struct student { int id; char name[256]; }
重命名:typedef struct student re_data;
使用:main() {? re_data data[] = { {1,"aa"}, {2,"bb"} }; }
(3) 直接重命名
定義:typedef struct { int id; char name[256]; } re_data;
使用:main() { re_data n1={1,"aa"}, n2={2,"bb"}; }
6.2 枚舉
(1) 默認(rèn)值:enum XX{ X1, X2 }? //默認(rèn)值,0, 1
(2) 初始值:enum XX{ X1=1, X2=2 }?
7. 多文件
注釋:.h頭文件,.c 源文件
7.1 .h頭文件
(1) 判斷聲明是否存在?(ifdef),存在則加載內(nèi)容
#ifdef {key}
...
[#else]
...
#endif
(2) 判斷聲明是否不存在(ifndef),不存在則加載內(nèi)容
#ifndef {key}
...
[#else]
...
#endif
(3) 判斷表達(dá)式(if)?
#if {表達(dá)式}
...
[#else]
...
#endif
?(4) 代碼例
#ifndef _文件名_H_
#define _文件名_H_ //不存在則聲明變量,防止多次引用重復(fù)聲明
...
int sum(int x, inty);
[#else]
...
#endif
7.2 .c源文件
(1) 代碼例
#include "xx.h" /* 引入.h頭文件 */
int sum(int x, int y) {
return x+y;
}
(2) 主程序
#include <stdio.h> /* <>引入系統(tǒng)程序 */
#include "xx.h" /* ""引入自定義程序,找不到再找系統(tǒng) */
void main() {
...
}
8. 指針
8.1 內(nèi)存地址
(1) 值傳遞:setData1(n1);? //內(nèi)部dn1屬性值變更,不影響函數(shù)外的n1的值。
(2) 地址傳遞:setData2(&n2); //內(nèi)部dn2屬性值變更,外部變量n2的值也變更。
typedef struct {
int id,
char name[256]
} data
void main() {
data n1={1,"aa"}, n2={2,"bb"};
setData1(n1);
setData2(&n2);
}
void setData1(data dn1) {
dn1.id=3;
}
void setData2(data *dn2) {
dn2.id=4;
}
8.2 指針
注釋:int a =1;
(1) 定義:int *p;? int *p=null;?
(2) 賦地址:p=&a;?int *p=&a;
(3) 賦值: *p=300;?
注釋:p為地址,*p為值
8.3 數(shù)組指針
(1) 數(shù)組:int a[3]={1,2,3}
注釋:值 a[0],a[1],a[2],? 地址 &a[0],&a[1],&a[2]
(2) 指針指向數(shù)組開頭:int *p = &a[0];? //等同與 int *p = a;
注釋:值 *p=a[0],*(p+1)=a[1], *(p+2)=a[2]???地址 p=&a[0], p+1=&a[1], p+2=&a[2]
(3) 指針指向數(shù)組中間:int *p = &a[1];?
注釋:值 *(p-1)=a[0],*p=a[1], *(p+1)=a[2]???地址 p-1=&a[0], p=&a[1], p+1=&a[2]
(4) 循環(huán)
for(i=0;i<3;i++){
*(a+1) /* 或者 p[1] */
}
for(i=0;i<3;i++){
*p
p++ /* 指針使用后,需手動更改指針 */
}
9. 讀寫文件
9.1 文件函數(shù)
(1) 打開文件:FILE *file = fopen("c:\\xx.txt", "w");
(2) 關(guān)閉文件:fclose(file);
(3) 讀寫函數(shù):
fgetc(file);? fputc(file); // 讀寫1個(gè)字符
fgets(s,n,file);? fputs(s, file); // 讀n個(gè)字符到s, 寫s到文件
注釋:二進(jìn)制讀寫 fread, fwrite。fscanf(file,"xx%d", &s);? fprintf(file, "xx%d\r\n", 1);
9.2 讀寫區(qū)分(fopen參數(shù))
(1) 只讀:r? // 文件不存在,異常
(2) 只寫:w // 文件不存在,新建。覆蓋原有文件內(nèi)容
(3) 只寫:a // 文件不存在,新建。原有文件末尾添加內(nèi)容文章來源:http://www.zghlxwxcb.cn/news/detail-827669.html
注釋:r+(讀寫),w+(讀寫), a+(讀寫)文章來源地址http://www.zghlxwxcb.cn/news/detail-827669.html
9.3 例
#include <stdio.h>
#include <stdlib.h>
void main() {
FILE *file = fopen("c:\\xx.txt", "w");
if ( file == null ) {
exit(1);
}
fprintf(file, "xxx \r\n"); /* \r\n輸出后換行 */
fclose(file);
}
到了這里,關(guān)于C語言(學(xué)習(xí)筆記)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!