一、指標和引用
1.指標:型別 *指標變數
例如:int *pi;
簡單的使用方法:
int ival=120;
int *pi=&ival;
注意:定義指標時指定的型別實際上是指標指向的物件的型別;通過指標可以直接給物件賦值;定義指標時必需給指標初始化。
初始化指標的方法:
int *pi=nullptr;
int *pi=0;
或者呼叫標頭檔案#include下的null
int *pi=null
2.引用:型別 &引用變數=初始值
注意:引用必須初始化,初始值是乙個有記憶體位址的物件,如變數;初始化後就不能更改;它只是為乙個已經存在的物件起的另乙個名字並且與所指物件佔據同乙個位址空間。
int ival=100;
int &ra=ival;//正確
int &ra1;//錯誤,沒有初始化
int &ra2=&ival;//錯誤,不能用位址進行初始化
int &ra3=10;//不能用沒有記憶體位址的數值初始化
3.右值引用:&&右值引用變數=右值表示式
注意:右值引用只能繫結臨時物件,不能夠繫結左值。
使用:
int i=42;
int &r=i;//正確
int &&rr=i;//不能繫結在左值
int &r2=i*5;//i*5是右值
int &&r3=i*5;//正確
將左值賦值給右值的方式:
運用標頭檔案中的函式 std:move()
int &&rr1=10;
int &&rr2=rr1;錯誤
int &&rr3=std::move(rr1);//正確
二、new和delete
(一)new
定義:new運算子在堆上動態分配空間,建立物件,並返回物件的位址。一般將返回的位址儲存在指標變數中。
使用:1.new 型別 或者 new 型別(初始值)
例如:
int *pi=new int;
*pi=521;
int *pi2=new int(100);
2.new 型別[陣列大小]
例如:int *pi=new int [100];分配乙個大小為100的int型別的陣列並返回他的位址。
(二)delete
定義:將new運算子分配的空間釋放,否則將造成記憶體洩漏。
使用:1.delete 指標
int *pi=new int;
*pi=521;
delete pi;
2.delete 指標
int *pi=new int[100];
delete pi;
三、標準庫型別string
標頭檔案:#include
這裡僅介紹string的簡單運用
(一)利用string讀入文字:
string word;
while(cin>>word) //cin反覆讀取單詞,遇到空格停止一次,直到檔案末尾
cout《或者利用getline()函式,直到遇到換行符停止一次。
string line;
while(getline(cin,line));
cout《求string物件的長度的方法:
string line="hello";
string::size_type len1=line.size();
auto len2=line.size();
decltype(line.size()) len3=0;
或者將string型別轉換為c風格
string s1="if you really want it";
int x;
x=strlen(s1.c_str());
C 的學習之路(復合型別)
注意 1.單引號和雙引號的區別。可以這樣賦值char a s 但是不能這樣賦值char a s 因為 s 實際上表示的是字串所在的記憶體位址,而 s 只是ascii碼83的另一種寫法。2.strlen 只計算可見字元,不把空字元計算在內。讀入空格所需的get 和getline 面向行的輸入getli...
python復合型別 python復合型別
鏈結 list python的列表的特點 可以隨時新增和刪除元素 可以做的操作有 切片,新增,刪除,查詢,修改,排序 列表元素可以是不同型別,在型別不同的情況下就無法排序 列表是有序的 定義小馬列表 li twilight pinkiepie rainbow dash 插入 insert self ...
C 學習 C 復合型別
1.引用 引用是為某乙個變數起了另乙個名字,定義方式為type rval val 引用型別必須與引用的變數型別完全一致,引用後,rval和val將會被視為乙個變數,只不過有兩種呼叫方式,改變rval的值,val的值會隨之改變,改變val的值,對rval進行呼叫時值也發生了改變。將乙個值繫結後,將無法...