[英]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.