你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開發入門 ☞ C言語系列一

iOS開發入門 ☞ C言語系列一

編輯:IOS開發綜合

前言
  •  什麼是操作零碎:操作零碎是一種零碎軟件,用來管理計算機的軟硬件資源。
  •  主流操作零碎:

    挪動便攜式設備:Android、IOS、Windows Phone、Symbian(塞班)、Black Berry(黑莓) OS

    PC團體電腦:Windows、Mac OS、Unix、Linux

  •  什麼是IOS:IOS是一款由蘋果公司開發的挪動操作零碎(iOS運轉在挪動便攜式設備上)
  •  什麼是iOS開發:就是開發運轉在iOS零碎上的使用或游戲軟件,如:QQ、淘寶、憤恨的小鳥等。
  •  Mac OS文件零碎:對文件停止管理的零碎叫文件零碎
  UNIX常用命令:

    檢查命令的詳細協助: man 命令名   (比方要看看 ls 命令的詳細用法,執行 man ls)

    pwd  (print work directory):打印以後目錄(任務目錄) 目錄 == 文件夾

    cd   (change directory)

    cd /   進入根目錄

    cd Users   進入用戶目錄

    cd tarena  進入用戶的主目錄(Home Directory)

    ls (list) :列出以後目錄下的一切內容

      ls -a  //-a 即all,列出目錄下的一切文件(包括以.掃尾的隱含文件)

      ls -l  //-l 羅列文件的詳細信息(文件名、權限、一切者、文件大小等)

    mkdir  創立目錄(文件夾)

    touch  創立文件

    who  顯示以後用戶名

    clear 清屏

    touch xxx.m  新建xxx.m文件

    open xxx.m   翻開xxx.m文件

    在根目錄下運用ls列出一切內容:

      Applications  放一切的使用順序

      Library   使用順序需求的其庫等外容

     �.network    網絡相關

      System  零碎相關

      Users    用戶的目錄

  常用目錄或途徑:

    主目錄(Home Directory):一個用戶有一個自己的主目錄,用戶在此目錄下擁有很高的權限。

    /   根目錄(Root Directory):只要一個,代表整個硬盤

    特殊途徑:   /  根途徑    ./  以後���徑    ../  上一級途徑

    Desktop  桌面

    Documents  文稿

    Downloads  下載

    Library    其他

    Movies    影片

    Music  音樂

    Pictures   圖片

    Public 公共目錄

 留意:按一下tab鍵,可以自動補齊指令稱號、文件夾、文件夾名等。

C言語的特點
  • 豐厚的運算符
  • 豐厚的數據類型
  • 可以直接操作硬件
  • 高效的目的代碼
  • 可移植性好
C言語的用處
  • 編寫零碎軟件、圖形處置、單片機順序、嵌入式零碎開發甚至是用於科研
  • 編寫游戲外掛
  • 編寫Android順序
  • 編寫iOS順序
C言語的編譯器
  1. gcc  GNU Compiler Collection(GNU編譯器套件),GNU組織開發的開源收費的編譯器。

    ( gcc 原名為 GNU C Compiler,只能處置C言語,後來GCC很快地擴展,也可以處置C++、Objective-C、Java等其它言語)

  1. clang  開源的BSD協議的基於LLVM的編譯器;蘋果公司自己的編譯器。

    (LLVM可以作為多種言語編譯器的後台來運用,前端用clang)

C言語的版本問題
  1. 1983年美國國度規范局(American National Standards Institute,簡稱ANSI)成立了一個委員會,開端制定C言語規范的任務
  2. 1989年C言語規范被同意,這個版本的C言語規范通常被稱為ANSI C
  3. 1999年,國際規范化組織ISO又對C言語規范停止修訂,在根本保存原C言語��征的根底上,針對應該的需求,添加了一些功用,命名為C99
  4. 2011年12月8日,ISO正式發布C言語新的國際規范草案:C11
C言語的官方規范
  1. ANSI C / C89規范:1989年,美國國度規范協會(ANSI)發布了第一個官方規范(簡稱 C89規范 或 ANSI C)。
  2. C99規范:1999年,國際規范化組織(ISO)和國際電工委員會(IEC)發布了C言語的新規范。
  3. C11規范:2011年12月8日,國際規范化組織(ISO)和國際電工委員會(IEC)再次發布了C言語的新規范。
C言語順序的運轉進程

一、編譯:編譯是由編譯器來執行的,次要做的時語法反省任務;將C源順序翻譯成計算機能辨認的0和1。

  • 運用什麼編譯器:Xcode3運用GCC,Xcode4運用LLVM編譯器(前端用clang)
  • 如何運用clang編譯器編譯順序:
    • 在終端中輸出:cc  –c  文件名.c
    • 編譯成功,會生成.o目的文件
  • 編譯器的錯誤和正告功用
    • 假如代碼有語法問題,編譯器會直接報錯。並指出錯誤的個數和詳細行號。
    • 只需有1個錯誤,順序就不能編譯成功,也不會生成.o文件
    • 正告信息只是編譯器的一些建議,並不影響編譯經過

二、鏈接:將自己編譯好的.o目的文件和C順序庫函數組合在一同,生成可執行文件。

    由鏈接器完成,clang編譯器外面曾經包括了鏈接指令

  • 在終端中輸出:cc  文件名.o
  • 鏈接成功,會生成a.out可執行文件

三、運轉:兩種運轉方式:

  • 直接雙擊翻開a.out文件
  • 終端中運用 ./a.out 指令

  修正文件內容之後,一定要重新編譯、鏈接,再運轉。

  其他clang指令:

  • 修正可執行文件a.out的稱號:cc  xxx.o  -o 新文件名
  • 一同編譯、鏈接:cc  xxx.c

  

  整個順序的運轉進程:編寫源順序==>預處置==>編譯器==>銜接器==>可執行

  留意:gcc可換為clang(CC); gcc -E test.c 檢查編譯前文件內容 (-E的意思是:做預處置)

  1. 預處置:gcc -E test.c -o test.i (預處置的後果可以用-o的方式保管到一個文件test.i中)
  2. 編譯:gcc -c test.i  //編譯成功,會生成.o目的文件; 1,2可以兼並:gcc -c test.c
  3. 銜接:gcc test.o
  4. 執行:./a.out
  •  簡寫:gcc test.c  (1,2,3的兼並)
  •  執行:./a.out
用Xcode創立項目

  

  • Product Name:產品稱號
  • Organization Name:公司稱號
  • Company Identifier :公司獨一標識,普通為公司官網網址的倒序
  • Bundle Identifier:產品獨一標識
  • Type(Language):項目言語類型

 

  C言語順序是由函數構成的,C順序的入口是main函數。函數外部代碼的執行順序,是從上到下執行的,如瀑布一樣。

  錯誤類型:

  • 語法錯誤:編譯器會直接報錯
  • 邏輯錯誤:沒有語法錯誤,只不過運轉後果不正確
關鍵字

  C言語順序是由英文單詞構成的,其中有些單詞被C言語賦予了特殊含義,那麼這些單詞就是關鍵字。

  C言語的零碎保存字(32個關鍵字)

  1. 根本數據類型(5個):void、int、float、double、char
    • void:聲明函數無前往值或無參數,聲明無類型指針,顯示丟棄運算後果
    • int:整型數據,通常為編譯器指定的機器字長
    • float:單精度浮點型數據,屬於浮點數據的一種
    • double:雙精度浮點型數據,屬於浮點數據的一種
    • char:字符型類型數據,屬於整型數據的一種
  2. 類型修飾關鍵字(4個):short、long、signed、unsigned
    • short:修飾int,短整型數據,可以省略被修飾的int
    • long:修飾int,長整型數據,可以省略被修飾的int
    • singed:修飾整型數據,有符號數據類型
    • unsigned:修飾整型數據,無符號數據類型
  3. 復雜類型關鍵字(5個):struct、union、enum、typedef、sizeof
    • struct:構造體聲明
    • union:共用體聲明
    • enum:枚舉聲明
    • typedef:聲明類型別名
    • sizeof:失掉特定類型或特定類型變量的大小
  4. 存儲級別關鍵字(6個):auto、static、register、extern、const、volatile
    • auto:指定為自動變量,由編譯器自動分配及釋放,通常在棧上分配空間;修飾部分變量,默許省略不寫
    • static:指定為靜態變量,分配在靜態變量區,修飾函數時,指定函數作用域為文件外部
    • register:指定為存放器變量,建議編譯器將變量存儲到存放器中運用,也可以修飾函數形參,建議編譯器經過存放器而不是堆棧傳遞參數
    • extern:指定對應變量為內部變量,即標示變量或許函數的定義在別的文件中,提示編譯器遇到此變量和函數時在其他模塊中尋覓其定義
    • const:與volatile合稱“cv'特性”,指定變量不可被以後線程/進程改動(但有能夠被零碎或其他線程/進程改動)
    • volatile:與cost合稱“cv特性”,指定變量的值有能夠會被零碎或其他線程/進程改動,強迫編譯器每次從內存中獲得該變量的值
  5. 流程控制關鍵字(12個)
    • 跳轉構造(4個):return、continue、break、goto
      • return:用在函數體中,前往特定值(或void值,即不前往值),作用:完畢函數
      • continue:完畢以後循環,開端下一輪循環
      • break:跳出以後循環或switch構造
      • goto:無條件跳轉語句
    • 分支構造(5個):if、else、switch、case、default
      • if:條件語句,前面不需求放分號
      • else:條件語句否認分支(與if連用)
      • switch:開關語句(多重分支語句)
      • case:開關語句中的分支標志
      • default:開關語句中的“其他”分支,可選
    • 循環構造(3個):for、do、while

        for:for循環構造,for(1;2;3)4;的執行順序為1->2->4->3->2…循環,其中2為循環條件

        do:do循環構造,do 1 while(2);的執行順序是1->2->1…循環,2為循環條件

        while:while循環構造,while(1)2;的執行順序是1->2->1…循環,1為循環條件

標識符

標示符就是順序員自己在順序中起的一些名字。(罕見的是:變量的稱號和函數的稱號)

  1. 命名規則:(一定要恪守) 
    • 只能由26個英文字母的大小寫、10個阿拉伯數字0~9、下劃線_組成
    • 嚴厲區分大小寫,比方test和Test是2個不同的標識符
    • 不能以數字掃尾
    • 不可以運用關鍵字作為標識符
  2. 命名標准:(最好要恪守) 
    • 盡量起個有意義的稱號,普通用英文單詞,留意長度適中,可讀性要強。
    • 假如標識符中含有多個單詞,可以運用駝峰標識(除開第一個單詞,前面每個單詞的首字母都是大寫):
      •  firstName、myFirstName,或許運用下劃線_來銜接:first_name、my_first_name
    • 普通狀況下,
      • 變量名:每個單詞首字母大寫;
      • 函數(辦法):第一個單詞的首字母小寫,其它單詞的首字母都大寫。

          (如:UserName    PassWord   showMessage  isPrint)

數據
  1. 靜態數據:是指一些永世性的數據,普通存儲在硬盤中。
  2. 靜態數據:是指在順序運轉進程中,靜態發生的暫時數據,普通存儲在內存中。
    • 當運轉某個順序(軟件)時,整個順序就會被加載到內存中,在順序運轉進程中,會發生各種各樣的暫時數據,這些暫時數據都是存儲在內存中的。當順序中止運轉或許計算機被強迫封閉時,這個順序發生的一切暫時數據都會被肅清。
    • 你能夠會問:既然硬盤的存儲空間這麼大,為何不把一切的使用順序加載到硬盤中去執行呢?有個次要緣由是內存的訪問速度比硬盤快N倍。
  3. 數據的轉換
    • 靜態數據到靜態數據的轉換(也就是從磁盤加載到內存)
    • 靜態數據到靜態數據的轉換
      •  如:手機拍照片存儲到手機的硬盤上
  1. 數據的大小
    • 不論是靜態還是靜態數據,都是0和1組成的。
    • 數據都有大小,靜態數據就會占用硬盤的空間,靜態數據就占用內存的空間
    • 數據越大,包括的0和1就越多,比特位和字節
    • 計量單位:

        1 B = 8 bit

        1 KB = 1024 B, 1 MB = 1024 KB

        1 GB = 1024 MB, 1 TB = 1024 GB

變量
  • 概念

    是內存中的一片空間。用來保管順序運轉時期的暫時數據。

    有名字,有類型

    有名字,就可以反復運用

    變量的類型決議著變量占用多大的內存空間。

  • 聲明(定義)變量

    int x; 定義一個int類型的,名字叫x的變量

  • 變量的初始化

    第一次給變量叫初始化

    最好不要運用沒有初始化過的變量

#include <stdio.h>

int main() {

    int x;//x是變量名,int是變量的類型

    printf("x=%d\n", x); //x=1606422582,渣滓數據

    x = 10; //將10保管到x中,第一次賦值相當於初始化

    x = 20; //將20保管到x中,當前就叫給變量賦值

    int y = 30;//定義變量的同時初始化

    printf("y=%d\n", y);

    return 0;

}

變量的類型

分兩種:根本類型, 自定義類型

  1. 根本類型

    整形:

    有符號:可以是負數,也可以是正數。

      int     // signed int

      short int  短整形

      long int  長整形

      long long int  

    無符號:只能是負數,不能是正數

      unsigned int

      unsigned short int

      unsigned long int

      unsigned long long int

    特殊整形:

      char  

      unsigned char

    浮點型:全部是有符號

      float

      double

      long double

  1. 自定義類型: struct,  union, enum
  2. 數據的保管(二進制)

    1Byte = 8bit

    1KB = 1024Byte

    1MB = 1024KB

    …

  1. 類型的區別

    short int       2Bytes  16bit

    int        4Bytes      32bits

    long int 8Bytes      64bit(64位零碎)   4Bytes(32位零碎)

    long long int    16Bytes

 

  占用內存空間多,表示的數據的范圍就廣

  留意:int類型後面有其它修飾時,int可以省略。

  bool 表示布爾運算,只包括true和false兩個數值。需求在文件中參加如下語句: #include <stdbool.h>

數據類型

對應內存區域,其值可變,變量有相應的類型和值。

變量類型分為字符型char、整數型int、浮點型float/double、指針、構造、結合等類型。

#include <stdio.h>

int main() {

    float f=3.14;

    printf("f=%f\n", f);//f=3.140000

    double d=1.73;

    printf("d=%lf\n", d);//d=1.730000;默許都打印6位小數

    printf("f=%.2f\n", f);//保存兩位小數

    printf("sizeof(float)=%ld\n", sizeof(float));

//表示數據的范圍很大,外部運用了迷信計數法來表示

    //3.14:3.14×10^0

    //0.00314:3.14×10^-3

    //省略有意義0

    f=.314;//f=0.314000

    f=3.;//f=3.000000

    f=3.14E-3;//3.14×10^-3;

    printf("f=%f\n", f);//f=0.003140

    

    f=3.14F;//float類型的字面值前面加f,F

    f=3.14f;

    f=0x314F;//F代表十六進制的F

    return 0;

}

  

 

  

 

 

【iOS開發入門 ☞ C言語系列一】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved