簡體   English   中英

將int數組轉換為C中的指針

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

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