還在被c/c++指標折騰到抓狂嗎?
很正常,我也是。
int num=1;
int* pnum=#
僅知道pnum型別是整型指標,以及怎樣獲取乙個變數的指標的你,還是個指標小白,連指標的門檻大概都還沒有邁進,前行的路上等待你的可還有指標2級,指標4級,指標6級,專業指標8級……
深知指標疼痛的博主,還在艱辛地奮鬥在指標從入門到放棄的路上呢
嗯,程式中的天使和魔鬼,說的大概就是指標了。
來道指標4級題目看看:
想想下面的程式會怎樣
#include "pch.h"
#include
int addarr(const int* p1, int num)
delete p1;
return thesum;
}int main()
;std::cout << "arr:" << arr << std::endl;
int sumofarr = 0;
sumofarr = addarr(arr, 3);
std::cout << "sumofarr:" << sumofarr << std::endl;
}事實上,這裡面有一些不正確,無法編譯的地方,見下面詳細解釋
#include "pch.h"
#include
int addarr(const int* p1, int num)//p1是指向常量整數的指標(指標的指向可以更改,但是所指向的位址中儲存的值不可以更改》_<)
delete p1;
return thesum;
}int main()
;std::cout << "arr:" << arr << std::endl;
int sumofarr = 0;
sumofarr = addarr(arr, 3);
std::cout << "sumofarr:" << sumofarr << std::endl;
}明白了嗎?你真的明白了嗎?還不明白?明白了?真的明白了?你以為你真的明白了?
再看一遍題目,想想它會怎麼樣:
#include "pch.h"
#include
int addarr(int* const p1, int num)
delete p1;
return thesum;
}int main()
;std::cout << "arr:" << arr << std::endl;
int sumofarr = 0;
sumofarr = addarr(arr, 3);
std::cout << "sumofarr:" << sumofarr << std::endl;
}怎麼樣,茫然了點沒有,懵逼了點沒有?
來看看具體的解釋
#include "pch.h"
#include
int addarr(int* const p1, int num)//p1是指向整數的常量指標(指標的指向不可以更改,但是所指向的位址中儲存的值可以更改》_<)
//覺得上面的注釋似曾相識是否?仔細一看,那是不一樣的
//delete p1;
return thesum;
}int main()
;std::cout << "arr:" << arr << std::endl; //小小的問題,arr的輸出和p1的輸出一樣嗎?
int sumofarr = 0;
sumofarr = addarr(arr, 3);
std::cout << "sumofarr:" << sumofarr << std::endl;
}arr的輸出和p1的輸出一樣嗎?
當然一樣了!函式addarr呼叫時,實參arr複製傳遞給了p1,arr和p1的值能不一樣麼?
怎麼樣,現在清醒了點沒有?
清醒了吧,那再來懵逼點:
指標與常量的關係分三類,
(1)指向常量物件的指標
(2)指向某個物件的常量指標
(3)指向常量物件的常量指標
第一種情況下,不能修改被指向的物件,但可以使指標指向其他的物件;
int value=5;
const int* pvalue=&value;
*pvalue=6;//編譯不通過
pvalue=nullptr;//可以
第二種情況下,不能修改指標中儲存的位址,但可以修改指標指向的物件
int value=5;
int* const pvalue=&value;
*pvalue=6;//可以
pvalue=nullptr;//編譯不通過
第三種情況下,指標和被指向的物件都定義成常量,因此都不能修改
int value=5;
int* const pvalue=&value;
*pvalue=6;//編譯不通過
pvalue=nullptr;//編譯不通過
哈哈哈哈哈哈……cnm…… mnp結束!
Vue router你真的了解了嗎
6.1 如何實現改變url的情況下頁面不進行重新整理location.hash 設定乙個值 history.pushstate 6.2 建立路由 掌握基本的結構 在使用腳手架建立的時候使用路由,能夠在src下建立乙個route檔案,裡面的index.js來配置路由資訊,並且在main.js裡面進行匯...
你真的了解Ioc與AOP嗎?(4)
本部分示例 請參考 src step4 目錄 如果使用remoting技術對hellogenerator進行改造,使其具有分布式遠端訪問能力,那麼在不使用ioc技術的情況下,我們將會作出如下調整 如果要讓某個物件具有分布式的功能,必須使其繼承自marshalbyrefobject,這樣才可以具有遠端...
你真的了解Ioc與AOP嗎?(4)
你真的了解ioc與aop嗎?1 你真的了解ioc與aop嗎?2 你真的了解ioc與aop嗎?3 你真的了解ioc與aop嗎?4 你真的了解ioc與aop嗎?5 本部分示例 請參考 src step4 目錄 如果使用remoting技術對hellogenerator進行改造,使其具有分布式遠端訪問能力...