簡體   English   中英

初始化指向堆棧上指針的指針

[英]Initialize pointer to pointer on the stack

我是C新手,我正在嘗試做正確的指針/內存操作...

就我而言,我使用的是strtol,我需要傳遞一個** char來保存幾個返回值之一,但是分配堆空間實在是太過分了。 我可以找到的最干凈正確的方法(我希望)是在堆棧上騰出空間:

char *_ = NULL;
char **endptr = &_;
ret = strtol("not a number", endptr, 0);

我很好奇,是否有更簡潔或慣用的方式來獲得這種效果? 命名我永遠不會使用的東西時,我感到很臟。

編輯:澄清一下,我確實打算使用endptr,而不是_

strtol接受NULL作為第二個參數。 參見http://www.cplusplus.com/reference/cstdlib/strtol/

因此,您可以這樣編寫代碼:

ret = strtol("not a number", NULL, 0);

如果不接受NULL,則可以避免這樣的一行代碼:

char *unused;
ret = strtol("not a number", &unused, 0);

如果不需要endptr,則可以將null指針傳遞給strtol。 否則,我不必擔心命名您將不會使用的變量。 盡管我不認為我會像您一樣命名_

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM