我正處於學習C語言的初始階段。我對包括空指針在內的聲明有一個疑問。無效指針結構
void (*myvar)(const struct foo *);
任何人都可以請幫我關於上述行。上面一行的確切含義是什麼,以及如何在代碼中使用這個指針。
我正處於學習C語言的初始階段。我對包括空指針在內的聲明有一個疑問。無效指針結構
void (*myvar)(const struct foo *);
任何人都可以請幫我關於上述行。上面一行的確切含義是什麼,以及如何在代碼中使用這個指針。
在你的問題,
void (*myvar)(const struct charpp *);
按照注
是一個函數指針,而不是一個簡單的pointer -to -struct
。你可以找到更多關於這個here的信息。
另外,請檢查this答案,以清楚地瞭解使用情況。
注意:char
是c中的保留關鍵字[datatype]。它不能用作變量名稱,就像你在代碼中使用的那樣。改變一下別的。
感謝您的回覆! – user1138143 2014-12-05 10:35:11
@ user1138143最受歡迎。 :-) – 2014-12-05 10:35:39
@Gopi你看完我的完整答案了嗎?包括註釋? – 2014-12-05 10:44:32
即應該是可變聲明的指針的一個函數採取const char *
作爲參數,不返回任何值。我說應該,因爲你在參數類型的聲明中有錯誤(沒有這樣的東西,如const struct char *
)。
如果修復錯誤,並假設你的意思const char *
,那麼你可以使用它像下面的代碼:
#include <stdio.h>
void my_print_line(const char *str)
{
printf("%s\n", str);
}
int main(void)
{
void (*myvar)(const char *);
myvar = &my_print_line;
myvar("Hello world!");
}
感謝您的回覆!我明白struct char是無效的。我試圖給出一些var名字,但我的錯誤給了字符。正確的一個:void(* myvar)(const struct foo *); – user1138143 2014-12-05 11:43:31
這是一個指向函數的指針。如果您遵循Spiral Rule,則可以輕鬆打破並理解規則。看看Example2。現在你可以很容易地,把你的聲明,而不是示例,並打破它的一部分,以獲得更好的理解。
+--------------------+
| +---+ |
| |+-+| |
| |^ || |
char *(*fp)(int, float *);
^^^ || |
| | +--+| |
| +-----+ |
+------------------------+
此外,struct char
將產生一個錯誤。
感謝您的回覆! – user1138143 2014-12-05 11:47:57
'struct char'是一個錯誤。 – 2014-12-05 10:31:16
這是一個函數指針,其中1)函數返回void,2)唯一的參數是const。但是,類型const struct char *可能無效 – user3629249 2014-12-05 10:59:28