#import
int main(int argc, const
char * argv)
return
0;}
1.oc相對於c
在c的基礎上新增了一小部分物件導向的語法
將c的複雜語法封裝的更為簡單
oc完全相容c語言
在c語言的基礎上新增了一小部分物件導向的語法
2.oc程式的原始檔的字尾名是.m m代表message 代表oc中最重要的1個機制—–訊息機制;
c程式的原始檔字尾名是.c
3.main函式仍然是oc程式的入口和出口
int型別的返回值 代表程式的結束狀態
main函式的引數:仍然可以接受使用者在執行程式的時候傳遞資料給資料,引數也可以不要
4.#import指令
a.以#號開頭,是乙個預處理指令
b.作用:是c語言#include指令的增強版,將檔案的內容在預編譯的時候拷貝到指令的地方
c.增加之處:同乙個檔案無論#import多少次,只包含一次
如果#include指令要實現這個效果,就必須要配合條件編譯指令來實現,而#import指令只需要直接包含就可以,其他什麼都不用做
d.簡要原理:#import指令在包含檔案的時候,底層會先判斷這個檔案是否被包含 如果被包含就會略過,否則才會包含
5.框架
a.是乙個功能集
b.foundation框架
foundation:基礎,這個框架中提供了一些最基礎的功能(輸入輸出,一些資料型別)
6.@authoreleasepool 是自動釋放池
7.nslog函式
a.作用:是printf函式的增強版,向控制台輸出資訊
b.語法:nslog(@」要輸出的資訊」)
c.增加之處:1.輸出一些除錯資訊
2.會自動換行
3.oc中其實還新增了一些資料型別,nslog不僅僅可以輸出c資料型別變數的值還可以輸出oc中新增的資料型別的值
d.使用注意:1.nslog函式的第乙個引數前必須加乙個@符號
2.如果在字串的末尾加了個『\n』代表換行,那麼函式的自動換行就會失效
8.字串(nsstring)
a.專門用來儲存oc字串的位址
b.oc的字串常量必須要使用乙個字首@符號:
「啦啦啦」 這是乙個c語言的字串
@「啦啦啦」 這是乙個oc的字串常量
nsstring 型別的指標變數只能用來儲存oc字串的位址
c.語法:nsstring *str=@」啦啦啦」
d.注意:1.nslog函式的第乙個引數是乙個oc字串,所以nslog函式的第乙個實參應該以@符號開頭
2.如果要使用nslog函式輸出oc字串的值,那麼要佔位符%@,而不是c語音中的%s
9.@符號
a.將c字串轉換成oc字串
b.oc當中的絕大部分的關鍵字都是以@符號開頭
10.函式定義和呼叫
與c語言一樣
11.oc程式和c程式各個階段的字尾名對比
原始檔 目標檔案 可執行檔案
c .c .o .out
oc .m .o .out
12.oc中的資料型別
a.oc中支援c語言中的多有資料型別
1.基本資料型別(int double float char ….)
2.構造型別(陣列 結構體 列舉 …)
3.指標型別( int *p1;)
4.空型別(void)
5.typedef自定義型別
b.bool型別
1.可以儲存yes或no中的任意乙個資料
2.一般情況下bool型別的變數用來儲存條件表示式的結果
3.bool本質
typedef signed char bool;
實際上bool型別的變數是乙個有符號的char變數
#define yes ((bool)1)
#define no ((bool)0)
yes 實際上就是1
no 實際上就是0
c.boolean
1.boolean型別的變數可以儲存true或false
2.一般情況下bool型別的變數用來儲存條件表示式的結果
d. class型別 類
e. id型別 萬能指標
f. nil 與null差不多
g.sel 方法選擇器
h. block **段
13.如何定義類
a.語法:
1.位置:直接寫在原始檔之中,不要寫在main函式之中
2.類的定義分為兩個部分:
a.類的宣告:
@inte***ce 類名 nsobject
//功能就是1個方法,將方法的宣告寫在這
@end
b.類的實現:
@implementation 類名
講方法的實現寫在這
@end
3.注意
a.類必須要有宣告和實現
b.類名用你描述的事物的名稱來命名,類名的每乙個單詞的首字母必須大寫
c.為類定義屬性的時候,屬性的名詞必須以_開頭
d.類是無法直接使用的
14.物件
a.建立語法:
類名 *物件名 = [類名 new]
person *p1=[person new]
b.特點:可以直接使用
類中定義的東西,物件裡都有,不會多不會少
c.使用:
訪問物件的屬性:
1.預設情況下,物件的屬性是不允許被外界訪問的。如果允許物件的屬性被外界訪問,則在宣告屬性的時候加@public關鍵字
訪問物件的屬性方式:
物件名->屬性名=值;
(*物件名).屬性名
15.類無參方法:
a. 宣告:
1.位置:在@inte***ce的大括弧外面
2.語法:
- (返回值型別)方法名稱;
-(void)run;//表明宣告了乙個無引數無返回值的方法run
b.實現:
1.位置:在@implementation之中實現
2.實現的方法:
將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中
3.呼叫:
a.方法是無法直接呼叫的,因為雷不能直接使用,必須先建立物件,那麼這個物件中就有類中的屬性和方法了,就可以呼叫物件的方法了;
b.呼叫物件的方法:
[物件名 物件方法];
16.類帶1個引數方法
a. 宣告:
1.位置:在@inte***ce的大括弧外面
2.語法:
-(返回值型別)方法名:(引數型別)形參名稱;
-(void)eat:(*nsstring)foodname;
3.實現:
將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中
4.呼叫:
[物件名 方法名:實參]
17.類帶多個引數方法
a. 宣告:
1.位置:在@inte***ce的大括弧外面
2.語法:
-(返回值型別) 方法名:(引數型別)形參 :(引數型別)形參2 …
-(int)sum:(int)num1 :(int)num2
3.實現:
將方法的宣告拷貝到@implementation之中,去掉分號,追加大括弧一對,將方法的實現的**寫在大括弧中
4.呼叫:
[物件名 方法名:實參1 :實參2….]
18.帶引數的方法宣告規範:
a.如果方法只有1個引數,要求最好這個方法的名字叫做 ***with
b.如果方法有多個引數,建議這個方法名稱:
方法名with:(引數型別)引數名稱 and:(引數型別)引數名稱 ..
-(int)sumwith:(int)num1 and:(int)num2;
C 學習(一) 類與物件
大二時學校開過物件導向程式設計 c 語言 的課,使用的是清華大學出版社,李愛華 程磊主編的教材。近兩年在學習和專案中一直使用c,對於c 已經忘記得差不多了。如今大四畢業之際開始學習qt開發上位機,需要用到c 使用原教材再次學習一次。類與物件是c 中兩個基本的概念。可以理解類是資料型別,物件是類定義的...
一 類與物件
物件的儲存細節 程式啟動,先把程式載入到 區。系統自動建立乙個類物件,載入類中的物件方法列表。當通過乙個類建立物件時,先在堆中開闢一塊儲存空間給物件p,再初始化物件的各屬性為0,最後返回乙個位址儲存到棧中 區域性變數接收 物件的第0個屬性是系統建立的isa指標,指向建立該物件的類。類方法只能類呼叫,...
C 學習筆記(一) 類
c 使用關鍵字 class 來定義類。其基本結構如下 class myclass 定義這樣乙個類後,就可以在能訪問該定義的工程的其他地方對該類進行例項化。預設情況下,類宣告為內部的,即只有當前工程中的 才能訪問它。可以用internal 訪問修飾符關鍵字顯式指定,但這不是必須的,類在定義時預設為此型...