柚子快報(bào)激活碼778899分享:c語言 C 查漏補(bǔ)缺——1
柚子快報(bào)激活碼778899分享:c語言 C 查漏補(bǔ)缺——1
1、#include 、main函數(shù)
#include
/*
1、預(yù)處理指令,將stdio.h文件拷貝到當(dāng)前文件
2、
"stdio.h" —— 先在當(dāng)前文件所在目錄尋找stdio.h文件,找不到再去/usr/include去找stdio.h
兩者都能找到,考慮時(shí)間效率問題
*/
// main函數(shù), 目前寫法
int main(void)
{
}
// main函數(shù)標(biāo)準(zhǔn)寫法
int main(int argc, char **argc)
{
}
// main函數(shù)完整版
int main(int argc, char **argc, char **envp)
{
}
2、gcc編譯器
1、懶人編譯:
gcc hello.c 得到 a.out(a => application應(yīng)用 ;out => output 輸出)
2、編譯過程——四步驟/三步驟
gcc步驟
1、預(yù)處理 ? ? ? 將源文件中包含的頭文件拷貝到當(dāng)前的.c文件中 ? ? ? #include
2、編譯 ? ?將預(yù)處理文件得到的.i文件進(jìn)行編譯得到匯編文件(匯編文件:.s/.S => 匯編代碼) ? ? ? gcc -S hello.i -o hello.s (計(jì)算機(jī)依舊識別不了) ? ?gcc -s hello.i -o hello.s
3、匯編 ? ? ? 將編譯后等到的.s文件經(jīng)過匯編得到計(jì)算機(jī)可以識別的機(jī)器文件(目標(biāo)文件) ? ? ? gcc -c hello.s -o hello.o (o => object)
4、鏈接 ? ? ? 將c語言中原有代碼,如printf函數(shù)的實(shí)現(xiàn)代碼和我們自己編寫的代碼整合起來形成二進(jìn)制可執(zhí)行程序 ? ? ? |xxxxxxxxxx|.o + |yyyyyyyyyyy|.o = 二進(jìn)制可執(zhí)行程序 ? ? ? ?自己的代碼 ? ? ? ? ? ? ? ?原有代碼 ? ? ? ?gcc hello.o -o hello
gcc選項(xiàng): ? ? -E:預(yù)處理,只會(huì)拷貝頭文件 ? ? -o:指定輸出文件名 ? ? -S:只進(jìn)行編譯步驟 ? ? -c:只進(jìn)行匯編步驟
3、gcc正常使用
? ? ? gcc xxx.c -o xxx ? ? ? gcc hello.c -o hello
3、關(guān)于內(nèi)存
內(nèi)存——運(yùn)行程序 ? ? 1、原則上,任何程序訪問內(nèi)存前需要先分配內(nèi)存 ? ? 2、內(nèi)存是一步一步探索 ? ? 3、存儲(chǔ)區(qū)存儲(chǔ)數(shù)據(jù),獲取該存儲(chǔ)區(qū)的首地址即可 閃存——存儲(chǔ)數(shù)據(jù)(視頻、音頻、文字、程序)
4、關(guān)于變量
1、變量的命名
? ? 駝峰命名法(aaaAaa) ? ? int stuHeight = 178; ? ?下劃線命名法(aaa_aaa) ? ? int stu_age = 178;
2、變量輸出
/*
*printf輸出函數(shù)演示
*/
#include
int main(void)
{
int a = 30; //分配4字節(jié)存儲(chǔ)區(qū),存儲(chǔ)數(shù)據(jù)30
printf("hello, world\n");
printf("This num is %d\n",a);
return 0;
}
3、轉(zhuǎn)義符
5、數(shù)據(jù)類型
1、關(guān)于數(shù)據(jù)類型?
字符類型也是一個(gè)整型數(shù)據(jù),占位符為%hhd,但可以用字符方式處理該類型,占位符為%c 關(guān)鍵字? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?占位符? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?分配內(nèi)存 ? ? ? ? ? ? ? 值域 char? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? - half half %d ? ? ? ?-%hhd / %c? ? ? ? 1 字節(jié)? ? ? ? ? ? ? ? ? ?-128~127 unsigned char? ? ? ? ? ? ? ??? ? ? ? ? -?%c? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1 字節(jié)? ? ? ? ? ? ? ? ? ?0~255 int? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?-%d? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4 字節(jié) unsigned int? ? ? ? ? ? ? ? ? ? ? ? ? ???-%u? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4 short (int)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?- half %d? ? ? ? ? ? ? - %hd? ? ? ? ? ? ? ? ? ?2 unsigned short (int)? ? ? ? ? ? ? ? ?- half %u? ? ? ? ? ? ? - %hu? ? ? ? ? ? ? ? ? ?2? ? ? ? ? ? ? ? ? ? ? ? ? ? 0~65535 long (int)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - long %d? ? ? ? ? ? ?- %ld? ? ? ? ? ? ? ? ? ? 4(32) / 8(64) unsigned long (int)? ? ? ? ? ? ? ? ? - long %u? ? ? ? ? ? ? - %lu? ? ? ? ? ? ? ? ? ? 4/8 long long (int)? ? ? ? ? ? ? ? ? ? ? ? ? - long long %d? ? ? - %lld? ? ? ? ? ? ? ? ? ?8 unsigned long long (int) ? ? ? ? ?- long long %u? ? ? -?%llu? ? ? ? ? ? ? ? ? ? 8 float? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - %f ? ? ? ? ? ? ? ? ? ? ?4 double? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - %f? / %g?/?%e? ? ?8
注:
double num = 3.14159;
printf("%f\n", num); // 輸出:3.141590
printf("%e\n", num); // 輸出:3.141590e+00
printf("%g\n", num); // 輸出:3.14159
數(shù)據(jù)類型決定了訪問內(nèi)存的方式 數(shù)據(jù)類型內(nèi)存 ? ? ? ? 8位系統(tǒng) ? ? 32 ? ? ?64 int ? ? 2 ? ? ? ? ? 4 ? ? ? 4 float ? 4 ? ? ? ? ? 4 ? ? ? 8
sizeof關(guān)鍵字
sizeof(param): ? - 計(jì)算內(nèi)存大小,以字節(jié)為單位 ? ? - 參數(shù)param可以是類型、變量、表達(dá)式 ? ? - 不計(jì)算參數(shù)值,只關(guān)注參數(shù)類型(賦值做無效處理) ? ? - sizeof(a),sizeof(int),sizeof(520),sizeof(1+1) ? - 占位符 ?%lu
man ascii ? // 查看對應(yīng)ascii值
char a = 'c' 實(shí)際存入內(nèi)存的是數(shù)字
2、字符數(shù)據(jù)類型
? ? ? - 字符常量:用單引號括起來表示 ? ? ? - 字符變量:(signed) char / unsigned char ? 占1字節(jié)內(nèi)存
6、關(guān)于進(jìn)制數(shù)
?OCT - 八進(jìn)制 DEC - 十進(jìn)制 HEX - 十六進(jìn)制
1 Byte = 8 bit (1 字節(jié)等于 8位) int ? ?4 字節(jié) ? ?-32位 short ?2 字節(jié) ?-16位
char a = 0b01111111 11111111; (輸入) ? ? ?a = 0b11111111;(實(shí)際) ? ? ? ? ? ? ? ?原因char類型只占1字節(jié)(8位),先輸入被后輸入覆蓋
7、C語言的動(dòng)態(tài)(堆)內(nèi)存分配
// 動(dòng)態(tài)堆內(nèi)存分配
#include
#include
int main()
{
int *pm = (int*)malloc(4); // 分配四字節(jié)內(nèi)存
*pm = 28;
printf("Value of pm: %d\n", *pm);
printf("pm address is: %p\n", (void *)pm);
free( pm );
return 0;
}
?
柚子快報(bào)激活碼778899分享:c語言 C 查漏補(bǔ)缺——1
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。