************************值型別和引用型別******************************
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語言的應用非常廣泛,既可以編寫系統程式,也可以編寫應用程式,還可以應用到微控制器及嵌入式系統的開發中。這就是為什麼大多數開發人員初學程式設計...