東哥開發(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;
}
(六)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);
- 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)開頭
}
感謝觀看菊霜,求贊求贊