你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS開辟基本之C說話

iOS開辟基本之C說話

編輯:IOS開發綜合

為什麼進修IOS開辟要先學C說話呢,進修c說話對IOS開辟有何感化。

如今愈來愈多的IOS開辟興致喜好者投入到了iOS培訓中,有的是曾經退職的員工,有的是還在就讀的先生,還有一些是完整零基本的同窗,那末關於他們來講就要一切從基本開端學,起首從C說話學起。

由於C說話是一門說話基本,因具有簡練、靈巧等特色而被普遍運用,在多種開辟情況中都起側重要感化。那末,為何進修iOS開辟要先學C說話呢?  

由於在iOS開辟中,會常常應用C說話和匯編的,而匯編說話絕對而言要生澀繁瑣些,C說話是以便成為法式員的首選。並且作為一位及格的C說話工程師,理解最根本的gcc編譯器,數據類型,變量和常量,構造,結合和列舉,C尺度庫,堆內存分派,IO等較多,這些又為往後的C、嵌入式等等說話的進修打下了堅實的基本,靈巧應對各類開辟任務,做一位精彩軟件工程師。  

所以,C說話工程師具有靈巧適用的表達方法,使得他們可以在法式或許一些年夜型數據庫底層焦點法式,專業的圖形處置法式,視頻圖象處置法式和游戲設計等等法式運用中披發光和熱。

概覽

以後挪動開辟的趨向曾經勢弗成擋,這個系列願望淺談一下小我對IOS開辟的一些看法,這個IOS系列籌劃從幾個角度去說IOS開辟:

1.C說話

2.OC基本

3.IOS開辟(iphone/ipad)

4.Swift

這麼看下去還有年夜量的內容須要連續彌補,然則明天我們從最基本的C說話開端,C說話部門我將分紅幾個章節去說,明天我們簡略看一下C的一些基本常識,更高等的內容我將放到前面的文章中。

明天基本常識分為以下幾點內容(留意:輪回、前提語句在此不再贅述):

1.Hello World

2.運轉進程

3.數據類型

4.運算符

5.經常使用函數

Hello World

既然是IOS開辟系列起首看一下在Mac OS X中的C的運轉

翻開Xcode

選擇敕令行法式

填寫項目稱號並選擇應用C說話

選擇保留目次

主動生成以下代碼

OK,在Xcode上我們編寫本身的法式以下

//
// main.c
// C說話基本
//
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//
#include <stdio.h>
void showMessage(){
 printf("Hello,World!\n");
}
int main(int argc, const char * argv[]) {
 showMessage();
 return 0;
}

在下面的法式中我們須要說明幾點:

main函數是法式進口,一個法式只能有一個main()函數,須要有一個整型前往值(現實上前往值int可以省略,然則這其實不代表不前往值,而是默許為int;我們也能夠在main()函數中不供給return,這是由於c說話語法請求不敷嚴厲);
#include是預處置指令,用於包括指定文件(留意在編譯前即處置),它現實做的任務就是把對應文件復制到指定的地位; 包括的內容可所以任何類型的文件,而不只僅是.h文件;
下面的showMessage函數必需寫在main()函數下面,假如寫鄙人面則必需在main()函數之前聲明;
留意:#include 包括文件時有兩種方法:應用<>和””。差別就是<>包括只會查找編譯器庫函數文件,是以實用於包括庫函數;而“”包括則起首查找法式以後目次,假如沒有找到則查找庫函數途徑,是以實用於自界說文件;

運轉進程

C說話的運轉分為兩年夜步:編譯和鏈接

編譯:編譯階段會將對應的xxx.c源文件(ASCII格局)編譯成目的文件xxx.obj,它是二進制格局(固然普通我們會有多個.c文件,也就會生成多個對應的.obj);在編譯之前要停止預處置(例如#include指令),在編譯的同時還要停止語法檢討;生成的.obj文件其實不能零丁履行,由於各個.obj之間是有聯系關系的,並且他們還各自援用了C說話庫函數;
鏈接:鏈接的進程就是將各個.obj文件和C說話庫函數一路組合生成一個可履行文件的進程;

擴大

在年夜型項目開辟中法式中一切的代碼都寫到一個文件中是不實際的,我們平日將一個子操作分為兩個文件:.c文件和.h文件。在.c文件中完成對應的函數,在.h中停止函數聲明,如許只需在主函數上方包括對應的頭文件便可以將子操作分別出來並且不消斟酌次序成績。例如改寫“Hello World”的例子(留意message對應的.c和.h文件名完整可以不雷同,然則出於標准的目標我們照樣取雷同的文件名):

message.h

// Message.h
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
void showMessage();

message.c

// Message.c
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//
#include <stdio.h>
void showMessage(){
 printf("Hello,World!\n");
}

main.c

// main.c
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
#include <stdio.h>
#include "Message.h"
int main(int argc, const char * argv[]) {
 showMessage();
 return 0;
}

可以發明法式依然可以正常運轉,然則我們思慮一個成績:假如我們不分紅兩個文件,直接在主函數文件中包括message.c能否也能夠正常運轉呢?謎底能否定的,緣由是因為編譯生成的兩個文件main.obj和 message.obj在鏈接時會發明main.obj中曾經有message.obj中界說的showMessage函數,拋出“標示符反復”的毛病。

數據類型

類型潤飾符

從上圖我們可以清楚的看到C說話的數據類型構造,固然關於這些類型我們還有一些類型潤飾符(或叫限制符)

short 短型 ,潤飾int、double
long 長型,潤飾int、double
signed 有符號型,潤飾int、char
unsigned 無符號型,潤飾int、char

關於類型潤飾符須要做以下說明

這些潤飾符常常用來潤飾int型,在潤飾int類型時int可以省略;

short和long會轉變int型的長度,分歧編譯器項長度不雷同,然則short長度不年夜於int,int長度不年夜於long;
signed、unsigned不轉變類型長度,僅僅表現最高位能否為符號位,unsigned表現年夜於等於0的負數;

固然有時刻我們必需清晰每一個類型占用的字節,下表列出經常使用數據類型占用的存儲空間

留意:char類型是最小的數據類型單元,在任何類型的編譯器下都是占用1個字節,char類型的變量賦值可以直接賦值等於某個字符也能夠賦值為整數(對應的ASCII值);可使用兩個long來潤飾一個整形(就是常常應用的8字節的整形long long),然則兩個long不克不及潤飾double並且也不存在兩個short,不然編譯正告;一個浮點型常量假如前面加上f編譯器以為它是float類型,不然以為double類型,例如10.0是double類型,10.0f是float類型。

運算符

C說話中有34中運算符,同C#、Java等說話沒有太年夜的差別,這裡指列出一些留意事項

關系運算符為真就前往1,為假就前往0;在前提說話中非0即真(正數、負數均為真),只要0為假 ;
C說話可以不保留關系運算符的值 ;
逗號表達式終究的值是最初一個表達式的值;

針對下面幾點看以下例子

// main.c
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
#include <stdio.h>
int main(int argc, const char * argv[]) {
 int a=2>1,b=2<1,c=99,d=0;
 int f=0,g=0,h=0,e=(f=3,g=4,h=5);
 a>0;//沒有保留運算成果
 printf("%d,%d\n",a,b);//成果:1,0
 if(c){//可以經由過程
  printf("true.\n");
 }
 if(d){//沒法經由過程
  printf("false\n");
 }
 printf("%d\n",e);//成果:5
 return 0;
}

經常使用函數

printf()函數

printf()函數用於向尺度輸入裝備輸入數據,合營格局符可以完成壯大的輸入功效,下面的例子中我們曾經應用了這個函數。

平日我們的輸入不是固定內容而是包括某些變量,此時須要用到格局符,經常使用格局符以下

關於格局符的輸入寬度和浮點數的小數位我們可以停止准確的掌握

// main.c
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
#include <stdio.h>
int main(int argc, const char * argv[]) {
 int a=16;
 float b=79.3f;
 printf("[a=%4d]\n",a);
 printf("[a=%-4d]\n",a);
 printf("[b=%10f]\n",b);
 printf("[b=%.2f]\n",b);
 printf("[b=%4.2f]\n",b);
 return 0;
}

運轉成果以下

runResult

從運轉成果我們不難發明格局符%前的負數可以設置前端補齊,正數設置後端對齊,假如數據的總長度跨越設置的潤飾長度,則依照現實長度顯示;小數點後的整數用於掌握小數點後保存小數位的長度。

scanf()函數

scanf()函數用於從尺度輸出裝備吸收輸出數據

// main.c
// C說話基本
// Created by Kenshin Cui on 14-7-12.
// Copyright (c) 2014年 cmjstudio. All rights reserved.
//
#include <stdio.h>
int main(int argc, const char * argv[]) {
 int a,b,c;
 scanf("%d,%d,%d",&a,&b,&c);//此時須要輸出:1,2,3 然後回車
 printf("a=%d,b=%d,c=%d\n",a,b,c);
 return 0;
}

關於scanf()函數我們需求強調幾點

參數吸收以回車停止停止操作

假如須要吸收多個參數,多個參數之間的分隔符是隨意率性的,然則假如分隔符是“空格”則現實輸出的時刻分隔符可使空格、tab和回車(最初一個回車以為是停止符)

好了,本文內容就給年夜家引見這麼多,信任年夜家經由過程以上內容的進修曾經曉得進修C說話對ios開辟的感化了吧。願望以上所述年夜家愛好。

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

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