C語言學(xué)習目的及基礎(chǔ)入門

東哥開發(fā)實戰(zhàn)第一周 2019-11-15

目錄概述

  • 一剃浇、C語言學(xué)習目的
  • 二巾兆、C和C++的區(qū)別
  • 三、程序開發(fā)過程
  • 四虎囚、C語言基礎(chǔ)知識入門
    |(一)注釋的使用
    |(二)include導(dǎo)入頭文件與#define的使用
    |(三)基本數(shù)據(jù)類型
    |(四)main函數(shù)的使用
    |(五)printf函數(shù)格式化輸出
    |(六)scanf函數(shù)格式化輸入
    |(七)變量
    |(八)運算符
  • 五角塑、C語言基礎(chǔ)語句
  • 六、C語言控制結(jié)構(gòu)
    |(一)

一淘讥、C語言學(xué)習目的

  • 兩個面試
  • 后期服務(wù)JNI (C語言) C JAVA 編程能力 編程思想

二圃伶、C語言和C++的區(qū)別

  • C:面向過程:小王 走進教室 拿出電腦 開始聽東哥的課
  • C++:面向?qū)ο螅?br> 誰上課 Teacher (姓名 身高 年齡 授課) ->東哥
    誰來聽 Student (姓名 身高 年齡 學(xué)號 選修課) ->小王
    什么課 Sbuject (課程編號 課程名稱) ->Android開發(fā)
    哪里上 Classroom (編號 座位數(shù)) -> 5405
    怎么上 Computer (。。窒朋。搀罢。。)-> Hasee

三炼邀、程序開發(fā)過程

  • 1.選擇開發(fā)工具IDE: DevC++ Android Studio
    2.創(chuàng)建項目 寫代碼
    3.運行
    4.結(jié)果

編譯器 - 將高級語言轉(zhuǎn)化為機器語言

  • 1.寫代碼 例
   #include<stdio.h>
   int main()
  {
      printf("Hello world");
      return 0;
  }
  • 2.預(yù)編譯 ->編譯器(制定規(guī)則)
    gcc -E test.c -o test.i
    a.展開
  • 3.編譯 -> 高級語言轉(zhuǎn)化為 匯編代碼
    gcc -S test.i -o test.s
    a.檢查語法錯誤
    b.轉(zhuǎn)化為匯編代碼
  • 4.匯編 -> 把匯編代碼轉(zhuǎn)化為二進制數(shù)據(jù)
    gcc -c test.s -o test.o
    a.轉(zhuǎn)化為目標文件——二進制數(shù)據(jù) 0101010011001001
  • 5.鏈接 -> 將所有目標文件鏈接為可執(zhí)行文件(所有 xx-o —— .exe)
    gcc -o test.o test
    cios

四魄揉、C語言基礎(chǔ)知識

(一)注釋的使用

  • 1.//單行注釋
  • 2./* 多行注釋 */

(二)include導(dǎo)入頭文件與#define的使用

1、include

  • 即“宏” 導(dǎo)入頭文件拭宁,如果系統(tǒng)已經(jīng)提供某些功能的實現(xiàn)洛退,只需要使用include將這些功能所在的頭文件導(dǎo)入進來就可以了。頭文件類型有兩種杰标,以下為他們的寫法和不同點:
#include <iostream> 
編譯器首先從 系統(tǒng)的類庫 里面去查找這個頭文件兵怯,如果沒有,再到自己的文件中查找
#include "iostream"  
編譯器首先從 自己的文件 里面去查找這個頭文件腔剂,如果沒有媒区,再到系統(tǒng)的文件中查找

2、define

  • "#define可以為類型定義別名
#define INT int
  • "#define可以為數(shù)值定義別名掸犬。這時達到了定義一個常量的效果
#define KILLED -1
  • 使用#define的好處在于一方面加強了代碼的可讀性袜漩,另一方面是增強可操作性便于代碼修改。(當多出使用#define定義的別名時湾碎,別名對應(yīng)的數(shù)值需要修改時宙攻,可以直接再#define處快速修改)

(三)基本數(shù)據(jù)類型

short、int介褥、long座掘、char、float柔滔、double 這六個關(guān)鍵字代表C 語言里的六種基本數(shù)據(jù)類型溢陪。在不同的系統(tǒng)上這些類型占據(jù)的字節(jié)長度是不同的:

- int     整數(shù) 64位系統(tǒng)里面占4個字節(jié)  (以下同64位系統(tǒng))  最多  
    輸出格式:%d  %02d 不足的補齊 01 

-short    短整型 占2個字節(jié)內(nèi)存空間
    輸出格式:%hd

- long    長整型 占8個字節(jié)內(nèi)存空間   
    輸出格式:%ld

- float   浮點型 占4個字節(jié)內(nèi)存空間
    輸出格式:%f  %.1f 保留1位有效數(shù)字

- double  雙精度浮點型 占8個字節(jié)內(nèi)存空間
    輸出格式:%f  或 %lf

- char    字符型 占1個字節(jié)內(nèi)存空間
    輸出格式:%c 輸出字符  %d輸出ASCII碼值

- char*   字符串型 占8個字節(jié)內(nèi)存空間    C++中 string同為字符串
    輸出格式:%s 輸出字符串

- bool    布爾類型 true/false 1/0 非零即真 零即假



定義變量和聲明變量的區(qū)別
定義一個整形變量 立刻為我們分配內(nèi)存空間 如:int a = 1;
    特點:運行時占空間咱圆,使用時效率高
聲明一個整型變量 沒有分配內(nèi)存空間 如:int b; b = 20;使用的時候才會分配內(nèi)存空間 
    特點:運行時不占空間 使用時速度慢一點
  • 下面是32位系統(tǒng)與64位系統(tǒng)各數(shù)據(jù)類型對比:


    轉(zhuǎn)自CSDN C語言入門經(jīng)典——基礎(chǔ)知識(數(shù)據(jù)類型)(32位與64位系統(tǒng)基本數(shù)據(jù)類型的字節(jié)數(shù)).png

(四)main函數(shù)的使用

  • main(int argc, char** argv)函數(shù)
    main函數(shù)=代碼塊=完成特定任務(wù)糠悼,所有程序的入口點都是main函數(shù);

  • int返回值: 記錄當前程序的運行狀態(tài) ; 0:正常結(jié)束 資源自由分配 ; 非0:1 異常結(jié)束 沒收資源

  • int argc:參數(shù)個數(shù)
    char*argv[]: 每個參數(shù)組成的字符串數(shù)組

(五)printf函數(shù)格式化輸出

  • printf輸出語句贞奋,用來讓終端輸出數(shù)據(jù)超全,數(shù)據(jù)類型不同咆霜,輸出方式不同,常見方式請見(三)
  • 打印常量字符串
  • 轉(zhuǎn)義字符:\a 警告 \b 退格 \f 換頁 \n 換行 \r 回車 \t 跳格 \v 垂直跳格
int main(int argc, char*argv[]) 
{
    printf("%d\n",argc);
    printf("%s\n",argv[0]);
    printf("Hello World\n");
    return 0;
}
上式運算結(jié)果.png

printf.png

(六)scanf函數(shù)格式化輸出

  • scanf() 函數(shù)用來格式化輸入數(shù)據(jù)卵迂,即按用戶指定的格式從鍵盤上把數(shù)據(jù)讀入到指定的變量中裕便。其原型為:int scanf ( char * format [ ,argument, … ]);
    【參數(shù)】format為格式化控制字符串绒净,可以由三類字符構(gòu)成见咒。
  • 一般變量都需要進行 & 取地址
  • 當用戶在終端輸入數(shù)據(jù)時,數(shù)據(jù)會被存放到 緩存流挂疆,scanf用于在緩沖流中找到數(shù)據(jù)將其放到給定的位置
  • 放到給定位置就是保存輸入的數(shù)據(jù)改览,保存數(shù)據(jù)需要用到的變量下翎,我們只需要把數(shù)據(jù)送到對應(yīng)的地址,就存儲好了該數(shù)據(jù)宝当,就可以通過該變量使用該數(shù)據(jù)视事。所以進行 & 去地址。
\\輸入輸出兩條數(shù)據(jù)
Int a = 0 ,  b = 0;
scanf(“%d %d”,&a , &b);
printf(“%d %d”,&a , &b);
scanf.png
  • getchar():從緩沖區(qū)讀取一個字符

(七)變量

  • C語言中庆揩,變量分為全局變量和局部變量俐东;也可以這樣分:自動變量,靜態(tài)變量.前者是按變量作用范圍來分的订晌,而后者是按變量存儲方式來分的虏辫。
局部變量:{}里的代碼從開始到結(jié)束,局部變量的優(yōu)先級最大 
    int a = 20锈拨;  //全局變量
    int main()
    {   
    int a;   //局部變量
    printf("a",a);  //輸出第二個 int a 即局部變量 
    if()
    {
        int a=10;    //(更小的)局部變量
    }                       
  • 在C語言中砌庄,如果按存儲占用空間來分,包括:
    整型變量(代碼為int)奕枢,整型變量包括長整型變量(代碼為long int)以及短整型變量(代碼為short int)娄昆,字符型變量(代碼為char),浮點型變量(代碼float)等缝彬。當然還有數(shù)組萌焰,結(jié)構(gòu)體變量等.但新手需要注意的是,每一種變量類型最終都對應(yīng)的格式字符.如:%d跌造。
  • C語言還有一個重要變量:指針變量.它存放的值是一個內(nèi)存地址杆怕。
  • C語言中變量名是有大小寫之分的,如SUN與sun就是兩個不同的變量名壳贪。
    另一點陵珍,聲明變量時,可以不用聲明就直接賦值來決定變量類型的語言违施,這類語言變量的聲明通常被稱為弱類型互纯,而如(c++等)必須先聲明,后使用,而且聲明時必須確定變量類型,這種就是嚴格的數(shù)據(jù)類型。
    變量有兩種類型:屬性變量和用戶自己建立的變量磕蒲。

(八)運算符

  • C的運算符有以下幾類:
    1.算術(shù)運算符:* - + / % ++ (a++先賦值后運算 ++a先運算后賦值)
    2.關(guān)系運算符: > < == != >= <=
    3.邏輯運算符:! && ||
    4.位運算符:<< >> ~ | ^ &
    5.賦值運算符:=及擴展賦值運算符
    6.條件運算符:?
**問號表達式**   c = 3 >1 ?  'y':'n';
    char c;  
    if(3>1){c='y';}  else{c='n';} 
運行結(jié)果  輸出 y

7.逗號運算符:,

**逗號表達式**  int result = (表達式1留潦,表達式2,表達式3)
    int temp = 20;
    int t2 = (temp--,temp--,temp--);
    if(t2)
        {
            printf("temp = %d\n",temp);
            printf("t2 = %d\n,t2);
        }
運行結(jié)果  輸出 temp=17 辣往; t2=18

8.指針運算符:*和&
9.求字節(jié)數(shù)運算符:sizeof
10.強制類型轉(zhuǎn)換運算符:(類型)
11.分量運算符:. ->
12.下標運算符:[ ]
13.其他:如函數(shù)調(diào)用運算符:()
注意:條件運算符是C語言中惟一一個三目(三元)運算符

  • 運算符優(yōu)先級

優(yōu)先級與求值順序無關(guān)兔院。如a+b && bc,雖然優(yōu)先級最高站削,但這個表達式求值順序是從左到右坊萝。

優(yōu)先級從上到下依次遞減,最上面具有最高的優(yōu)先級,逗號操作符具有最低的優(yōu)先級十偶。

相同優(yōu)先級中菩鲜,按結(jié)合性進行結(jié)合。大多數(shù)運算符結(jié)合性是從左到右惦积,只有三個優(yōu)先級是從右至左結(jié)合的接校,它們是單目運算符條件運算符狮崩、賦值運算符蛛勉。

基本的優(yōu)先級需要記住:

指針最優(yōu)睦柴,單目運算優(yōu)于雙目運算董习。如正負號。

先算術(shù)運算爱只,后移位運算皿淋,最后位運算。請?zhí)貏e注意:1 << 3 + 2 & 7等價于 (1 << (3 + 2))&7.

邏輯運算最后結(jié)合恬试。


五窝趣、C語言基礎(chǔ)語句

C語句分類

  • 控制結(jié)構(gòu)(詳見下文)- 順序 循環(huán) 分支(選擇)
  • 函數(shù)調(diào)用語句
  • 表達式語句
  • 空語句
  • 復(fù)合語句

六、C語言控制結(jié)構(gòu)

if語句

******************************************??
if(表達式)
{
  語句1训柴;?
  語句2哑舒;
}????????????????????//??if下的各獨立語句用分號分隔。
******************************************??
if(表達式)?語句1幻馁;?else?語句2洗鸵;
******************************************??
if(表達式1)
   語句1;
else if(表達式2)
  語句2仗嗦;
···
else if(表達式n)
  語句n膘滨;
else
  語句n+1;

switch語句

switch 可讀性
switch(已經(jīng)確定值的變量-int-char)
{
case 10 'a' ; break ;
case 10 'b' ; break ;
default ; break ;
}

    int a = 0;
    cout << "請輸入一個數(shù)字1-3:";
    cin>>a;
    switch(a)
    {
        case 1:
            cout<<"你輸入的是1"<<endl; 
            break;
        case 2:
            cout<<"你輸入的是2"<<endl; 
            break;
        default:
            cout<<"你輸入的是3"<<endl; 
            break;
     } 

for循環(huán)語句

for(循環(huán)控制變量稀拐;運行的條件火邓;控制變量的變化)
for循環(huán)中間條件是必要的,其他部分可以省略德撬,分號“铲咨;”不能省略
for(;1<2;)
for(int i=0 ; i<10 ; i++)
循環(huán)控制變量的定義和初始化只執(zhí)行一次

//輸出1-10之間的整數(shù)    
    for(int i=0;i<=10;i++)
    printf("i ",i); 
//不斷輸出1-10之間的整數(shù)
    for(int i=0;1<2;i++)
    {
        i = i%10;
        if(i == 0)
            printf("i = %d ",i);
        else
            printf("i =%d ",i);
    }

while循環(huán)語句

while(表達式){
    語句塊
}
//表達式 : 循環(huán)條件
//語句塊:循環(huán)體

1.先計算“表達式”的值,當值為真時蜓洪,執(zhí)行”語句塊“
2.執(zhí)行完“語句塊”纤勒,再次計算表達式額值,如果為真隆檀,繼續(xù)執(zhí)行“語句塊”
3.重復(fù)執(zhí)行這個過程摇天,指導(dǎo)表達式的值為假


break

跳出“if北滥,switch”循環(huán)

輸出1-10之間的整數(shù) ,在5處暫停
    for(int i=0;i<=10;i++)
    {  
        printf("%d ",i); 
        if( i == 5)
        break;  //當i=5時跳出本次for循環(huán)
    }

continue

停止運行下列代碼闸翅,回到本次循環(huán)開頭繼續(xù)運行

輸出1-10之間的整數(shù) ,除了5
    for(int i=0;i<=10;i++)
    {  
        printf("%d ",i); 
        if( i == 5)
        continue;  //當i=5時回到本次循環(huán)開頭
    }

感謝觀看菊霜,求贊求贊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末坚冀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鉴逞,更是在濱河造成了極大的恐慌记某,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件构捡,死亡現(xiàn)場離奇詭異液南,居然都是意外死亡,警方通過查閱死者的電腦和手機勾徽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門滑凉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喘帚,你說我怎么就攤上這事畅姊。” “怎么了吹由?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵若未,是天一觀的道長。 經(jīng)常有香客問我倾鲫,道長粗合,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任乌昔,我火速辦了婚禮隙疚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘磕道。我一直安慰自己甚淡,他們只是感情好,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布捅厂。 她就那樣靜靜地躺著贯卦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪焙贷。 梳的紋絲不亂的頭發(fā)上撵割,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天,我揣著相機與錄音辙芍,去河邊找鬼啡彬。 笑死羹与,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的庶灿。 我是一名探鬼主播纵搁,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼往踢!你這毒婦竟也來了腾誉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤峻呕,失蹤者是張志新(化名)和其女友劉穎利职,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘦癌,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡猪贪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了讯私。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片热押。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖斤寇,靈堂內(nèi)的尸體忽然破棺而出楞黄,到底是詐尸還是另有隱情,我是刑警寧澤抡驼,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布鬼廓,位于F島的核電站,受9級特大地震影響致盟,放射性物質(zhì)發(fā)生泄漏碎税。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一馏锡、第九天 我趴在偏房一處隱蔽的房頂上張望雷蹂。 院中可真熱鬧,春花似錦杯道、人聲如沸匪煌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽萎庭。三九已至,卻和暖如春齿拂,著一層夾襖步出監(jiān)牢的瞬間驳规,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工署海, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吗购,地道東北人医男。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像捻勉,于是被迫代替她去往敵國和親镀梭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355