指標
可以使用指標記號操作儲存在陣列中的資料
可以在函式中訪問函式外部的大塊資料
動態為新變數分配空間
1 指標的宣告: long * pnumber;
2 位址運算子: &
例如:long number=1234l;
long * pnumber;
pnumber=&number;
3 間接運算子: *
4 指標的初始化 :
可以用變數位址初始化指標,**如下:
int number=10;
int * pnumber=&number;
還可以int * pnumber=0;
5 把指標初始化為char型別
可以用字串字面量初始化:char * str1="this is a test!"; (由於字面量是const型別,所以該指標只是指向該字串位址,不能修改其字串內容;若想修改其內容,可以用以下形式:const char * str1="this is a test!";)
指標陣列 '
格式如下:
const char * strs=;
使用指針對字串進行排序
讓輸出結果變整齊
6 常量指標和指向常量的指標
const char * strs=;
以上指標可以通過以下語名進行修改: strs[1]=strs[2];(讓兩個指標指向同一位址,實際字串的位址不變)
進行如下修改後指標陣列就不能修改了:
const char * const strs=;
對指標及其指向的內容使用const有三種不同情況:
(1)指向常量的指標:const char * parstr="this is a test string!";(指標指向的內容不能修改)
(2)常量指標: int num=100; int * const pnum=# (儲存在指標中的位址不能修改)
(3)指向常量的常量指標 int num=100; const int * const pnum=#(兩者都不能改變)
7 指標和陣列
指標的算術運算
指標遞增一: int * pnmu; pnum++; (稱動指標到指標指向陣列的下乙個元素)
計算兩個指標之間的差
使用指標名的陣列表示法
把陣列用作指外針: int nums[2]=;可以用指標表示法 如 nums[2]等同於(*data+3)
對多維陣列使用指標: int bean[2][3]; int * pbean=&bean[0][0]
c樣式字串的操作
在中宣告的函式,實現分析和轉換單個字元
標頭檔案在
連線字串: strcat() 把第二個字串追加到第乙個字串中
strncat()有三個叄數,前兩個同上,第三個用於指定第二個字串的字元個數
複製:strcpy()
比較:strcmp()
搜尋:strchar()
8 動態分配記憶體
自由儲存區:程式中沒有用到的記憶體空間 new對應的delete 用來釋放未用到的空間
陣列的動態記憶體分配: pstring=new char[20];(分配自由儲存區的記憶體)
刪險陣列時使用 delete pstring; 這裡可以不用指定維數
動態分配記憶體的危險
記憶體洩露 new後一定要使用delete釋放記憶體
指標和變數的作用域
自由儲存區的碎片
轉換指標
reinterpret_cast《指標型別》(表示式) 強制轉換任何型別指標
例如:float value=2.5f;
float * pvalue=&value;
long * pnumber= reinterpret_cast(pvalue); (型別為long,值本身沒有變)
C 學習筆記(六)
函式 函式時乙個命名了的 塊,通過呼叫函式執行相應的 可以有0個或多個引數,通常會產生乙個結果。1.乙個典型的函式包含了四個部分 返回型別,函式名,形參列表以及函式體。2.函式的呼叫完成兩項工作 一是用是引數 隱式的 初始化函式對應的形參,當呼叫乙個函式時,首先建立乙個同型別的變數a,然後將a初始化...
C 學習筆記六
標準庫的棧 佇列 雙向佇列 io庫的條件狀態 輸出緩衝區的管理 使用的標頭檔案 include 是乙個容器 使用的方法 標準庫的棧是基於陣列的 和棧類似。使用標頭檔案 include 優化了的雙向佇列,向兩端插入刪除開銷小,支援操作符,但是效能比vector差,占用更多記憶體 使用標頭檔案 incl...
c 學習筆記 六 委託
委託是一種引用方法的型別.一旦為委託分配了方法,該委託與方法具有相同的型別,委託象其他方法一樣具有返回值和引數.如 public delegate int mydelegate int x int y 與該委託簽名相匹配的方法可以分配給該委託.delegate關鍵字用於宣告乙個引用型別,通常委託用於...