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

  免費注冊 查看新帖 |

Chinaunix

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

指針的奇怪用法? [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-01-11 10:13 |只看該作者 |倒序瀏覽
定義了一個指針變量:
struct globals *ptr_to_globals;

ptr_to_globals = malloc(sizeof(struct globals));
但是很多情況都是寫成下面的形式,這是為什么呢?
(*(struct globals**)&ptr_to_globals) = malloc(sizeof(struct globals));

論壇徽章:
0
2 [報告]
發(fā)表于 2012-01-11 13:24 |只看該作者
這兩者應該等價啊,但是不太清楚為何要這么用 ......

論壇徽章:
36
IT運維版塊每日發(fā)帖之星
日期:2016-04-10 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-16 06:20:0015-16賽季CBA聯賽之廣東
日期:2016-04-16 19:59:32IT運維版塊每日發(fā)帖之星
日期:2016-04-18 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-19 06:20:00每日論壇發(fā)貼之星
日期:2016-04-19 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-04-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-08 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-13 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-28 06:20:00每日論壇發(fā)貼之星
日期:2016-05-28 06:20:00
3 [報告]
發(fā)表于 2012-01-11 14:10 |只看該作者
但是很多情況都是寫成下面的形式,這是為什么呢?
(*(struct globals**)&ptr_to_globals) = malloc(sizeof(struct globals));


何以得出“很多情況” ?

論壇徽章:
0
4 [報告]
發(fā)表于 2012-01-11 14:17 |只看該作者
Busybox?我記得busybox有一些不太好理解的指針用法
所以只看這一段應該看不出用處

論壇徽章:
0
5 [報告]
發(fā)表于 2012-01-11 14:29 |只看該作者
是的,上面舉的例子是busybox源碼。

#define G (*ptr_to_globals)
#define modinfo             (G.modinfo)
(*(struct globals**)&ptr_to_globals) = malloc(sizeof(struct globals));
這樣就可以使用modinfo來使用ptr_to_globals->modinfo的變量。
但是ptr_to_globals = malloc(sizeof(struct globals));
這樣也可以使用modinfo來使用ptr_to_globals->modinfo的變量。

論壇徽章:
0
6 [報告]
發(fā)表于 2012-01-11 16:34 |只看該作者
我好想在linux內核中也見過類似

*(type **)&p = xxx;

的用法。。。

但一時不記得具體什么地方,也很奇怪多一層解引用有什么目的...

論壇徽章:
11
未羊
日期:2013-12-16 12:45:4615-16賽季CBA聯賽之青島
日期:2016-04-11 19:17:4715-16賽季CBA聯賽之廣夏
日期:2016-04-06 16:34:012015亞冠之卡爾希納薩夫
日期:2015-11-10 10:04:522015亞冠之大阪鋼巴
日期:2015-07-30 18:29:402015亞冠之城南
日期:2015-06-15 17:56:392015亞冠之卡爾希納薩夫
日期:2015-05-15 15:19:272015亞冠之山東魯能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16賽季CBA聯賽之八一
日期:2016-07-22 09:41:40
7 [報告]
發(fā)表于 2012-01-11 17:03 |只看該作者
你確信是 ptr_to_globals = malloc(sizeof(struct globals)); ???
而不是 ptr_to_globals = (struct globals *) malloc(sizeof(struct globals)); ???
至于為什么, 我覺得就是人家不愛寫  (struct globals *) malloc(...);

論壇徽章:
0
8 [報告]
發(fā)表于 2012-01-11 17:10 |只看該作者
回復 7# zylthinking


    樓主奇怪的應該是指為什么會將指針再取一次地址,然后解引用再賦值,而不直接賦值。

論壇徽章:
11
未羊
日期:2013-12-16 12:45:4615-16賽季CBA聯賽之青島
日期:2016-04-11 19:17:4715-16賽季CBA聯賽之廣夏
日期:2016-04-06 16:34:012015亞冠之卡爾希納薩夫
日期:2015-11-10 10:04:522015亞冠之大阪鋼巴
日期:2015-07-30 18:29:402015亞冠之城南
日期:2015-06-15 17:56:392015亞冠之卡爾希納薩夫
日期:2015-05-15 15:19:272015亞冠之山東魯能
日期:2015-05-14 12:38:13金牛座
日期:2014-12-04 15:34:06子鼠
日期:2014-10-16 13:40:4715-16賽季CBA聯賽之八一
日期:2016-07-22 09:41:40
9 [報告]
發(fā)表于 2012-01-11 17:12 |只看該作者
rocklinux 發(fā)表于 2012-01-11 17:10
回復 7# zylthinking


因為不愛那樣寫, 我說了啊

論壇徽章:
0
10 [報告]
發(fā)表于 2012-01-11 17:22 |只看該作者
回復 9# zylthinking


哦。。

我覺得如果他只是偷懶的話,應該選擇一個擊鍵數更少的方式。。。
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP