C 學習筆記整理1

2021-06-09 03:41:24 字數 2316 閱讀 1649

************************值型別和引用型別******************************

1.framwork 記憶體中的劃分:

1.1.資料區:例如各種變數

a.棧:stack ,值型別,進棧,結構,列舉,double,能被直接訪問

1.2**區:例如,int a,b;a+b;方法型別的定義

2.只要變數中儲存的是自己就是資料

3.  

a.  int  a=17965 (a的記憶體位址是17965)

b.  string str ; (str的位址是8611)

str="xyz";  (str中儲存了「xyz"的位址110113)

4.class person

p=new person

p.name="李四" (只修改了相應記憶體中的內容)

p=new person("王五")   //  新記憶體中生成」王五「位址是13910    張三(堆8610) 李四(堆99816)

person p2 引用(進棧)

p2=new person(」趙六「) //堆中生成新的例項,堆中的東西只有內容,沒有名字

p(位址13910)=p2(位址1119);//此時」王五「張三」無引用,所以就被**了

p2=null(但p還有引用)

p=null(則:趙六被**)

5.函式傳參時,是預設是按照值進行傳遞的

例如:double numberbyref(ref  int a) //必須加ref,才能按照引用傳參,ref主要是針對值型別而言的,引用型別的引數傳遞的還是引用。

6.out方式傳參的優勢在於可以從函式中返回多個返回值

7.引用型別的的比較判斷:

person p

person p2

p=new person( )

p.name="tom"

p2=new person( )  //p不等於p2  因為p和p2指向的不是記憶體的同一塊記憶體位址

p2.name="tom"  

if(p.equals(p2))  -->可以用來比較引用型別的值是否相等

8.string型別的相等判斷

string str

str="abc"

string str2

str2="abc"

if(str==str2)  //str 等於str2 ,因為str和str2所引用的字串池建立的位址是相同的

9.char型別相等的判斷

char a=『a』

int y=97

if(x==y) // x和y的資料;型別不匹配,不能比較,char  x  是2個位元組,int  x是4個位元組 ,

int  x=x(字元) //從小型別資料向大型別資料轉換,不需要強轉

10.  引用型別和之型別的轉換必須要進行強制轉換,且if  判斷的運算子的兩邊的資料應相同(都為引用,或者都為數值)

****************************陣列******************************

1.幾乎任何資料型別都能構成陣列

2.   int [ ] a  (a在棧中位址是91891) =new int [5]  (在堆中,位址是19380,堆中的東西沒有名字,只有位址!!)

3. int  [  ] [  ]arrayofarray   //棧中的位址就是4個位元組,因為32位系統的定址就是32位,也就是4個位元組

4.  空格不等於空白字元

5. 使用引用型別,形參和實參指向同一塊記憶體

6. int  [ , ]  scare= new int [3,2]

foreach(int tmpint in score)

console.writeline( tmpint+「\t」)    // 可將二維陣列中的數都遍歷到,所以二維陣列本質是所有資料在乙個容器中,相當於一維陣列

7.引用型別存放的就是位址,要麼是null,要麼為某個記憶體的首位址

8.盡量少定義,但是可以多次賦值

9.  x.tostring ( ) (弱轉) ,(string)x (強轉)  //使用強轉的不安全

10.當資料量越大時,使用hashtable越有優勢

11.類例項在堆中的存放模式

a.類的字段可以在堆中中有多份(每個例項中堆中開闢乙個新的記憶體)

b. 類的方法只存在於**區,全員共享,所以只存放乙份

12.建構函式中可以執行類內的方法,因為在建構函式執行之前,記憶體中已經生成例項了,建構函式只不過是為該例項中填充資料而已

13.a.引用傳值是將當前形參的棧位址改變為形參的棧位址

b.引用傳值只是把實參的位址傳過來,而不是實參中儲存的位址!!!

C 筆記整理 1

include 標頭檔案,標準輸入輸出程式從編輯到執行過程 執行 再鏈結 linux庫 動態庫 靜態庫 typedef與 define的區別 typedef int ti define int td ti a,b,c 只有a為int 型別 td d,e,f a,b,c均為int 型別注意 defin...

C語言學習筆記整理1

以列印hello world為例,介紹以下知識點 1 無論看什麼程式,首先要去找到main函式 main函式是程式執行的入口 2 include和 include stdio.h 的區別 include告訴編譯器到系統的目錄下面去查詢標頭檔案 include stdio.h 告訴編譯器先到當前目錄下...

C語言整理筆記(1)

c語言是combined language 組合語言 的簡稱,作為一種計算機設計語言,它同時具有高階語言和組合語言兩者的特點,因此受到廣大程式設計人員的喜愛。c語言的應用非常廣泛,既可以編寫系統程式,也可以編寫應用程式,還可以應用到微控制器及嵌入式系統的開發中。這就是為什麼大多數開發人員初學程式設計...