亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3133 | 回復(fù): 11
打印 上一主題 下一主題

[C] 一個(gè)指針的地方?jīng)]看懂 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2010-06-10 10:32 |只看該作者 |倒序?yàn)g覽
下面這個(gè)程序
void main(){
                 char  **ppWData;
                 ppWData = (char **)malloc(sizeof(char *) * 4);
                 char pFill[10]="abc";
                 int i=0;
                 for(i = 0; i < 4; i++){
                                       *(ppWData + i) = pFill;
                             }

                        abc(ppWData);
}
void abc(void *abc){
        char *p;
        p= (char*)((size_t*)abc)[2];         //沒看懂?
              printf("%s\n",p);

}

上面這個(gè)程序,先定義一個(gè)雙指針ppwData,ppwData指向的地址空間是大小為4的數(shù)組,數(shù)組里面存的是char*。
然后給每個(gè)char*賦值。之后傳一個(gè)char**類型的參數(shù),用void*來接收。為什么這么做,這么做有什么意義?
也就是說,ppwData里面存的地址,讓abc來接收。那么abc雖然不是char**,也指向了這4個(gè)char*的第一個(gè)char*的首地址。
p= (char*)((size_t*)abc)[2];         這段代碼的執(zhí)行順序是不是((size_t*)abc) -〉((size_t*)abc)[2]; -〉   (char*)((size_t*)abc)[2];  這樣的?
(char*)和(size_t*)都是強(qiáng)制轉(zhuǎn)換?第一步,為什么轉(zhuǎn)成(size_t*)?第2步,加個(gè)[2],是不是說取出abc這個(gè)數(shù)組的第2個(gè)元素的值?然后應(yīng)為這個(gè)值是一個(gè)char*的地址,
所以第三步就把他強(qiáng)轉(zhuǎn)為char*了?
謝謝!

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2010-06-10 11:12 |只看該作者
分析是對的,呵呵
這么多強(qiáng)轉(zhuǎn)確實(shí)挺亂的
轉(zhuǎn)成void*是為了通用吧

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
3 [報(bào)告]
發(fā)表于 2010-06-10 11:16 |只看該作者
誰會這么寫程序呀{:3_197:}

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2010-06-10 11:18 |只看該作者
回復(fù) 2# bill15


    謝謝了,還真是為了通用。
   
   那為什么轉(zhuǎn)成(size_t*)?

論壇徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52雙子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午馬
日期:2013-10-18 21:43:38
5 [報(bào)告]
發(fā)表于 2010-06-10 11:25 |只看該作者
回復(fù)  bill15


    謝謝了,還真是為了通用。
   
   那為什么轉(zhuǎn)成(size_t*)?
spirit_12 發(fā)表于 2010-06-10 11:18



    因?yàn)?sizeof(size_t) 與 sizeof(指針) 一樣吧。

(size_t*) 寫成 (char **)不是更好么

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2010-06-10 11:32 |只看該作者
看著都頭暈~

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2010-06-10 11:52 |只看該作者
回復(fù) 5# hellioncu


    明白了。謝謝啊。原來就是為了把void*,轉(zhuǎn)成一個(gè)指針類型,所以就用了size_t*,如果用char**,也是一樣的,因?yàn)橹羔樀拇笮《家粯印?br />    
   非常感謝啊。

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2010-06-10 13:54 |只看該作者
這樣寫真的會把人搞暈! 所以還是用char **好點(diǎn)!

論壇徽章:
2
技術(shù)圖書徽章
日期:2013-09-04 15:21:51酉雞
日期:2013-11-01 21:20:20
9 [報(bào)告]
發(fā)表于 2010-06-10 14:24 |只看該作者
誰會這么寫程序呀
hellioncu 發(fā)表于 2010-06-10 11:16


呵呵,很多場合會用到。將整型的或結(jié)構(gòu)型的數(shù)組,字節(jié)化,或者反過來,通過不同指針的變化是最方便的。如果換成其他語言,是很累人的。

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2010-06-10 14:27 |只看該作者
程序假定指針?biāo)淖止?jié),過幾年x64一普及就淘汰的程序,自作聰明。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP