[英]convert int array to pointer in C
void test()
{
int buf[1000];
//populate buf
foo(buf);//is this correct? Can we pass buf as a pointer that foo expects?
}
void foo(void*ptr)
{}
編輯:如果foo是fwrite,上述(傳遞buf以便向fwrite提供內容以寫入某些文件的機制)是否仍然適用?
它在foo
參數中完全有效,它是一個可以指向任何類型的指針。 當您傳遞數組時,它會衰減為指向該數組第一個元素的指針(即,傳遞第一個元素的地址位置)。 所以,
ptr -> &buf[0] ;
是的,你可以這么做。
buf是數組的基本指針。
是的,您將始終將buf用作指針。
是的,它是正確的。 您可以在foo函數中使用“ ptr”指針。 http://codepad.org/HwYd0GAh
正如其他答案所指出的那樣, 是 ,您可以將buf
傳遞給該函數。
但是,在函數內部,變量ptr
類型為void*
。 而且ptr
本身只能做幾件事。 通常,您將其轉換(帶或不帶強制轉換)為相關的內容,例如int*
。
void foo(void *ptr) {
int *iptr;
iptr = ptr;
/* now use iptr */
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.