我正在做以下代碼。
#include <stdio.h>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int *p =a;
}
但是我的控制臺顯示了這個錯誤。
cannot convert 'int (*)[10]' to 'int*' in initialization
我不知道為什么。誰能告訴我原因和解決方案?
這是包含的螢屏截圖。 [https://imgur.com/a/U94vtKG]
uj5u.com熱心網友回復:
a是 10 個int指標。您不能將 1 個int指標分配給 10 個int指標。
如果要p指向 的第一個元素a,請更改:
int *p = a;
到:
int *p = &a[0]
uj5u.com熱心網友回復:
錯誤資訊
無法在初始化時將“int ( )[10]”轉換為“int ”
意味著實際上而不是這個正確的宣告
int *p = a;
你寫了
int *p = &a;
或者,如果a實際上陣列被宣告為二維陣列
int a[][10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
那么你需要寫
int ( *p )[10] = a;
那是您在問題中提供的代碼與錯誤訊息不對應。
通常當一個函式宣告為例如時發生這樣的錯誤
void f( int *a );
被稱為像
f( &a );
而不是像這樣稱呼它
f( a );
其中a是一維陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/342696.html
上一篇:無法參考物件屬性
