C語言筆記

hello world程序詳解

#include<stdio.h>    // 標(biāo)準(zhǔn)輸入輸出庫  預(yù)編譯文件
#include<math.h>    // 包含 math 庫
/*
# include 包含 <stdio.h> .h header 頭文件  
stdio standard 標(biāo)準(zhǔn)   i input 輸入   o output  輸出
這個(gè)文件可能包含一個(gè)輸入輸出的頭文件
C99   C語言標(biāo)準(zhǔn) 
/*

// 標(biāo)準(zhǔn)  int必須寫return  主函數(shù)入口
int main() {

    /* 
    * 我的第一個(gè)C語言程序  注釋 不被編譯器識別 
    */

    // 這是單行注釋
    printf_s("Hello World!\n");   // print 打印  format 格式化輸出
        
    int sqrt_num = sqrt(9);   // 使用math庫
    printf("sqrt_num %d\n", sqrt_num);

    return 0;
}

畫畫小游戲

// draw a shape of different picture
void draw_triangle() {
    printf("    /|\n");   // 語句statement是按順序執(zhí)行的
    printf("   / |\n");
    printf("  /  |\n");
    printf(" /   |\n");
    printf("/____|\n");
}

while 循環(huán)

void print_increment() {
    int number = 0;  // 設(shè)置為計(jì)數(shù)器
    // 判斷括號內(nèi)的expression是否為真
    while (number <= 5) {
        printf("%d\n", number);
        number++;  // number = number + 1 的簡化
    }
}

// 無論表達(dá)式是非為真都會執(zhí)行一次
void test_do_while() {
    int number = 6;
    do {
        printf("%d\n", number);
        number++;  // number = number + 1 的簡化
    } while(number <= 5);
}

for 循環(huán)

//  遍歷數(shù)組元素
void print_array_element() {
    int luckyNumbers[] = {4, 8, 15, 16, 23, 42};
    int i;
    for (i = 0; i < 6; i++){
        printf("%d\n", luckyNumbers[i]);
    }
}

結(jié)構(gòu)體

struct Student {
    char name[50];
    char major[50];
    int age;
    double gpa;
};

int main(){   
    struct Student student1;
    student1.age = 32;
    student1.gpa = 3.2;
   // 這里處理字符串需要strcpy函數(shù)
    strcpy( student1.name, "Jim");
    strcpy( student1.major, "Business");
    
    struct Student student2;
    student2.age = 18;
    student2.gpa = 2.2;
    strcpy( student2.name, "Sam");
    strcpy( student2.major, "Art");
    
    printf("%f", student2.gpa);
    
    return 0;
}

猜數(shù)字游戲

// 猜數(shù)字游戲
void guess_number_game_v1() {
    int secretNumber = 5;
    int guess;
    
    while (guess != secretNumber) {
        printf("Enter a number:");
        scanf("%d",&guess);
    }
    printf("You Win!");
}

void guess_number_game_v2() {
    int secretNumber = 5;
    int guess;
    int guessCount = 0;  // 猜測次數(shù)記數(shù)
    int guessLimit = 3;  // 猜測次數(shù)的限制為3
    int outOfGuesses = 0; // 0為假 1為真 用于切換狀態(tài)
    
    while (guess != secretNumber && outOfGuesses == 0) {
        if (guessCount < guessLimit) {
            printf("Enter a number:");
            scanf("%d",&guess);
            guessCount++;
        } else {
            outOfGuesses = 1;
        }
    }
    if (outOfGuesses == 1) {
        printf("out of guesses");
    } else {
        printf("You Win!");
    }
    
    }

2D Arrays & Nested Loops

/*2D Arrays & Nested Loops*/
void traverse_nested_arrays() {
    // 需要聲明是int類型的數(shù)組
    int numbers[3][2] = {
        {1, 2},
        {3, 4},
        {5, 6}
    };
    // printf("%d", numbers[0][0]);  // 通過下標(biāo)訪問數(shù)組元素
    int i, j;
    for (i = 0; i < 3; i++) {
        for (j = 0; j < 2; j++) {
            printf("%d,",numbers[i][j]);
        }
        printf("\n");
    }
}
1.如何理解c語言的內(nèi)存模型與指針墩剖。
https://www.zhihu.com/question/24466000/answer/27893272
編程指北
https://www.zhihu.com/question/432288840/answer/1798182117
2.變量名儲存在哪里,變量的儲存機(jī)制是什么俩功?
https://www.zhihu.com/question/34266997#:~:text=%E5%8F%98%E9%87%8F%E9%83%BD%E8%A6%81%E5%8D%A0%E6%8D%AE%E4%B8%80%E5%AE%9A,%E7%9A%84%E5%8F%98%E9%87%8F%E7%9A%84%E5%86%85%E5%AD%98%E5%9C%B0%E5%9D%80%E3%80%82&text=%E5%8F%98%E9%87%8F%E5%90%8D%E6%98%AF%E7%BB%99%E7%BC%96%E8%AF%91,%E5%AD%98%E6%94%BE%E5%9C%A8%E5%AF%84%E5%AD%98%E5%99%A8%E4%B8%AD%E4%BA%86%E3%80%82
3.數(shù)組連續(xù)存儲的機(jī)制是?
// 變量只是內(nèi)存地址的別名 通過&取出變量的地址
int age = 30;
double gpa = 3.4;
char grade = "A";
int numbers[3] = {1, 2, 3};
    
printf("age: %p\ngpa: %p\ngrade: %p\n", &age, &gpa, &grade);
printf("%p\n", &numbers[0]);
printf("%p\n", &numbers[1]);
printf("%p\n", &numbers[2]);

指針是地址
指針變量是存儲地址的變量

/*
    & 取變量地址
    * 定義指針變量 或者解引用(取值)
    */
    int age = 30;
    int *pAge = &age;
    int **ppAge = &pAge;
    int ***pppAge = &ppAge;
    double gpa = 3.4;
    double *pGpa = &gpa;
    char grade = "A";
    char *pGrade = &grade; 
    
    printf("age's memory address: %p\n", &age);  
    printf("pAge 's memory address: %p\n", &pAge);
    printf("ppAge 's memory address: %p\n", &ppAge);
    printf("pppAge 's memory address: %p\n", &pppAge);
    // * 解引用 這里是指針?biāo)赶蜃兞康闹?    printf("pAge內(nèi)存儲地址所指向的值: %d\n", *pAge);
    printf("ppAge 's memory address: %d\n", **ppAge);
    printf("pppAge 's memory address: %d\n", ***pppAge); 
    
    /*
        & 和 * 都是一元運(yùn)算符 互逆
        & 取地址
        * 取值
    */
    printf("%d\n", age);
    printf("%p\n", &age);
    printf("%d\n", *&age);
    printf("%p\n", &*&age);
    printf("%d\n", *&*&age);

文件操作

#include <stdio.h>

void write_flie() {
    //  w 寫入文件 如果沒有就創(chuàng)建 或者覆蓋 
    FILE * fpointer = fopen("employees.txt", "w");   // fopen 打開文件
    
//  fprintf(fpointer, "overridden");  // 這里覆蓋寫入了信息 
    fprintf(fpointer, "Jim, Saleman\nPam, Receptionist\nOscar, Accouning");
    
    fclose(fpointer); // 關(guān)閉文件 
}

void append_file() {
    // a 在指針末尾追加寫入 
    FILE * fpointer = fopen("employees.txt", "a");
    fprintf(fpointer, "\nKelly, Customer Service");
    fclose(fpointer);
}

void read_file() {
    
    char line[255];
    char line1[255];
    FILE * fpointer = fopen("employees.txt", "r");
    
    // 使用fgets讀取一行內(nèi)容 
    fgets(line, 255, fpointer);
    printf("%s", line);
    
    fgets(line1, 255, fpointer);
    printf("%s", line1);
    fclose(fpointer);
}
int main() {
    read_file();
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市硝全,隨后出現(xiàn)的幾起案子农猬,更是在濱河造成了極大的恐慌,老刑警劉巖改抡,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矢炼,死亡現(xiàn)場離奇詭異,居然都是意外死亡阿纤,警方通過查閱死者的電腦和手機(jī)句灌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欠拾,“玉大人胰锌,你說我怎么就攤上這事∶暾” “怎么了资昧?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枷邪。 經(jīng)常有香客問我榛搔,道長,這世上最難降的妖魔是什么东揣? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任践惑,我火速辦了婚禮,結(jié)果婚禮上嘶卧,老公的妹妹穿的比我還像新娘尔觉。我一直安慰自己,他們只是感情好芥吟,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布侦铜。 她就那樣靜靜地躺著,像睡著了一般钟鸵。 火紅的嫁衣襯著肌膚如雪钉稍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天棺耍,我揣著相機(jī)與錄音贡未,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俊卤,可吹牛的內(nèi)容都是我干的嫩挤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼消恍,長吁一口氣:“原來是場噩夢啊……” “哼岂昭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狠怨,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤约啊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后取董,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棍苹,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡无宿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年茵汰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片孽鸡。...
    茶點(diǎn)故事閱讀 39,711評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蹂午,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出彬碱,到底是詐尸還是另有隱情豆胸,我是刑警寧澤,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布巷疼,位于F島的核電站晚胡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嚼沿。R本人自食惡果不足惜估盘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望骡尽。 院中可真熱鬧遣妥,春花似錦、人聲如沸攀细。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谭贪。三九已至境钟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俭识,已是汗流浹背慨削。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人理盆。 一個(gè)月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓痘煤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親猿规。 傳聞我的和親對象是個(gè)殘疾皇子衷快,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內(nèi)容