直接編譯html
gcc main.c a.out
指定可執行文件名linux
gcc main.c -o main main
提示全部的警告信息git
gcc -Wall main.c
查看預處理以後、編譯以前的程序github
gcc -E main.c
rand()編程
/* rand()生成的隨機數是介於0~RAND_MAX之間的整數,不一樣平臺上RAND_MAX的值可能不同。 */ #include <stdlib.h> rand()%upper_bound
用srand函數指定Seed來生成隨機數數組
/* time函數獲得的是距離1970年1月1日00:00:00的秒數 NULL表示空指針 */ #include <stdlib.h> #include <time.h> srand(time(NULL));
「Hello, world!」[0] = 'A';
是不容許的。char str[10] = "Hello";
至關於char str[10] = { 'H', 'e', 'l', 'l', 'o', '\0' }
。printf("string: %s\n", str);
表示printf從數組str的開頭一直打印到'\0'爲止('\0'自己不打印)。若是沒有'\0'會出現越界。int a[][2] = { { 1, 2 }, { 3, 4 }, { 5 } }; /* 第一維能夠不指定,而是由編譯器自動計算 */ char days[8][10] = { "Monday", "Tuesday" }
int man, ret; ret = scanf("%d", &man); if (ret != 1) { printf("Invalid input!\n"); } /* 等待用戶輸入一個整數並回車,這個整數會被 scanf 函數保存在 man 這個整型變量裏。若是用戶輸入合法(輸入的確實是整數而不是字符串),則 scanf 函數返回1,表示成功讀入一個數據。 %d、%f、%c分別表示讀入一個整數、浮點數或者字符,第二個參數須要加&; %s表示字符串,第二個參數應該是數組名,不須要加& */
indent -kr -i8 main.c函數
在編譯時要加上-g選項,生成的目標文件才能用gdb進行調試:學習
gcc -g main.c -o main gdb main
watchpoints 查看當前設置了哪些觀察點指針
(gdb) watch input[5] Hardware watchpoint 2: input[5] (gdb) i watchpoints Num Type Disp Enb Address What 2 hw watchpoint keep y input[5] Hardware watchpoint 2: input[5] Old value = 1 '\001' New value = 2 '\002' 0x0804840c in main () at main.c:11 11 for (i = 0; input[i] != '\0'; i++)
x 從某個位置開始打印存儲器的一段內容,所有當成字節來看,而不區分哪些字節屬於哪些變量調試
(gdb) x/7b input