1.指針和引用
#pragma mark- 1.about Point Quote
void createPointAndQuote()
{
//指針就像電話號碼——指向 人 (正確的錯誤的) 有時也會空號
char char_tmp='a';
char *char_point=&char_tmp;
printf("指針是一個地址:\n%x\n",char_point);
//引用quote就像一個外號,是人衆多稱呼中的一個
char "e_char=char_tmp;
printf("引用就像一個外號:\n%c\n",quote_char);
}
有個人外號叫“刀巴”,——其實他的外號是色,刀疤是這個人的引用
你可以撥打138938找到一個人,這個電話就是指向那個人的指針
2.指針VS引用
#pragma mark- difference between them
void difference()
{
//point——電話
//電話——換號——指針指向不同
//電話——空號——空指針
//打錯了——野指針
//大小四個字節(32位) 8(64位)
string str="123456";
string &ref=str;
string *point=&str;
cout<<"ref:"<<ref<<"\tpoint:"<<*point<<endl;
cout<<"sizeof(ref):"<<sizeof(ref)<<"\tsizeof(pointer)"<<sizeof(point)<<endl;
//quote——外號
//不能改——你見過外號天天改的麼?
//必須初始化——外號不能憑空事先取好
}
3.誰是常量
#pragma mark- const 誰是常量
void whoIsConst()
{
int a=10;
int b=12;
//常量指針——指針指向的常量——對方——固定電話:電話(point)不能到處跑
const int* pointer=&a;
pointer=&b;
//*pointer=20;
printf("\n常量指針——就是固定電話%d\n",*pointer);
//指針常量——你用的公用電話——你跑不了
int *const pointer2=&a;
// pointer2=&b;
printf("\n指針常量——就是公用電話%d\n",*pointer2);
}
4.傳參
#pragma mark- 指針傳參和引用傳參
void swapint(int *a,int *b)
{
int temp;
temp=*a;
*a=*b;
*b=temp;
}
void swapint2(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void swapint3(int a,int b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int a=10;
int b=20;
//指針傳參
swapint(&a,&b);
cout<<"指針傳參"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
//引用傳參
swapint2(a,b);
cout<<"引用傳參"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
//值傳遞
swapint3(a,b);
cout<<"值傳參"<<endl;
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
三種傳遞描述起來倒是不難,看過火影的人都知道鳴人的絕招“影分身之術”,分身戰死了,還可以再生,本尊死了,就真死了。
指針傳遞+參數傳遞——本尊
值傳遞——分身
相關代碼:https://github.com/b9zhengaoxing/DataStructure_Point_Quote