指針 = 指向地址的針 = 存放地址的地址
我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、錦屏ssl等。為上千多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的錦屏網(wǎng)站制作公司int i = 1;
int* p = &i;
從上面的代碼可以理解:
定義了一個int型變量i,這個i是變量的名字,1是變量的值,那么變量存在的地方就是地址(假設(shè)為0xf7bc),代表一塊內(nèi)存,所以地址為0xf7bc的內(nèi)存上存放著值1。
定義了一個int型指針p,這個p是指針的名字,&i是指針的值,同樣,指針的存放也需要一塊內(nèi)存,當(dāng)然這個指針p也有地址(假設(shè)為0xf7d2),那么它的值就是0xf7bc,所以地址為0xf7d2的內(nèi)存上存放著值0xf7bc!
通過對比可以發(fā)現(xiàn),好像指針和變量這兩者的存在方式區(qū)別不大?
只不過指針存放的值是地址罷了。
比如在strcpy函數(shù)中,函數(shù)原型為:char *strcpy(char *dest, const char *src);
一般我們簡單使用起來是這樣用的:
char str[] = "hello";
strcpy(str, "world!");
有沒有發(fā)現(xiàn)函數(shù)形參const charsrc是一個指針,但是我們實際傳進(jìn)去的是一個字符串呢?
我們知道字符串實際是以字符數(shù)組的形式存在的,我們傳進(jìn)去的“world!”是怎么作為指針的呢?
答案是:雙引號!對,我放了雙引號!
雙引號做了這么幾件事:申請內(nèi)存,填充尾0,返回首地址。
所以直接傳遞字符串給函數(shù),函數(shù)收到的其實是字符串的首地址呢!
什么?地址?那不就是指針的值嘛!所以形參arg看似要求傳入指針,實際上想要的就是一個地址嘛!
知道這個之后事情就好辦了。
*argv[]需要什么呢?需要一個指針數(shù)組!
按照之前的思路,指針 = 地址。指針數(shù)組= 地址數(shù)組 = 存放了一堆地址的數(shù)組 = 存放了一堆字符串的數(shù)組 = 字符串?dāng)?shù)組!是不是通俗了許多
ok! *argv[]是存放地址的數(shù)組,數(shù)組名=首地址,那么我只要得到數(shù)組的首地址就是得到了存放地址的數(shù)組??!
所以**argv= *argv[]!
所有內(nèi)容僅供自己學(xué)習(xí)領(lǐng)悟,不代表完全正確,如有錯誤,感謝指正!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧