簡體   English   中英

錯誤:在 function 中打印數組時,下標值既不是數組也不是指針也不是向量(C)

[英]error: subscripted value is neither array nor pointer nor vector when printing an array within a function (C)

嗨,我正在嘗試打印一個數組,但每當我嘗試從 function 打印時,我都會不斷出現此錯誤(錯誤:下標值既不是數組也不是指針也不是向量)。 作為一個時間,我只想要數組中的數據而不是數據的 position。
***如果它不在 function 中,它也可以工作。

我的代碼如下:

int currenttime[] = {00,00,00};
int i;
void outputtime(int currenttime)
{   
    for(i = 0; i<3; i++) 
    {
     printf("%d ", i, currenttime[i]);
    }
}

int main()
{
outputtime(currenttime);
return 0;
}

你需要提供參數來匹配一個叫function的原型。
要么保留原型並相應地調用,要么調整原型。

這是一個指向 int 的指針(在 function 調用中使用數組標識符衰減)到您聲明期望一個 int 的 function。

outputtime(currenttime);

從上下文中我得出結論,在這種情況下,您的調用實際上就是您想要做的,因此需要調整原型以聲明指向int的指針參數。

void outputtime(int* currenttime)

但這給出了“1 2 3”的 output。
發生這種情況是因為在您調用printf()時,您提供了兩個值( icurrenttime[i] ),格式說明符"%d "只使用了一個值。

您想要打印這兩個值並需要調整說明符

printf("%d:%d, ", i, currenttime[i]);

這會給你一個 output

0:0, 1:0, 2:0, 

或者您將第一個值刪除為僅 output 數組的內容。

printf("%d ", currenttime[i]);

對於 output 的

0 0 0 

如果您現在想知道為什么您的數組的 init

int currenttime[] = {00,00,00};

每個部分只會給你一個 0; 那是因為000相同。 如果要更改 0 的打印方式,則需要在閱讀規范中的詳細信息后使用printf()的其他功能。

暫無
暫無

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

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