C Pointer error : cannot convert 'int (*)[10]' to 'int*' in initialization
C Pointer error : cannot convert 'int (*)[10]' to 'int*' in initialization
我正在执行以下代码。
#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]
a
是 10 int
个指针。您不能将一个 int
指针分配给 10 个 int
指针。
如果你想让p
指向[=12=的第一个元素],更改:
int *p = a;
至:
int *p = &a[0]
错误信息
cannot convert 'int ()[10]' to 'int' in initialization
意味着实际上而不是这个正确的声明
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
是一维数组。
我正在执行以下代码。
#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]
a
是 10 int
个指针。您不能将一个 int
指针分配给 10 个 int
指针。
如果你想让p
指向[=12=的第一个元素],更改:
int *p = a;
至:
int *p = &a[0]
错误信息
cannot convert 'int ()[10]' to 'int' in initialization
意味着实际上而不是这个正确的声明
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
是一维数组。