gpt4 book ai didi

c - 如果 int (*p_arr)[10] 被定义为指向大小为 10 的数组的指针,那么为什么编译器在这种情况下会显示警告?

转载 作者:太空狗 更新时间:2023-10-29 15:16:18 26 4
gpt4 key购买 nike

我有这个代码:

#include <stdio.h>

int main()
{
int arr[10] = {0};
int *p1_arr = arr;
int (*p2_arr)[10] = arr; // Line 7, Shows Warning here

...

return 0;
}

gcc 上使用 gcc -g -Wall LengthofArray.c 编译时,它显示以下警告:

gcc: LengthOfArray.c:7: [Warning] assignment from incompatible 
pointer type [enabled by default]

我的问题是,如果 int (*p2_arr)[10] 是一个指向大小为 10 的数组的指针,那么为什么编译器会显示此警告?

那么正确的做法是什么?

我在 Windows 7 32 位 (DevC++) 上使用 gcc 4.7.2
并且还检查了 SLES 10.3 x86_64 上的 gcc 4.1.2

最佳答案

... if int (*p2_arr)[10] is a pointer to an array of size 10 ...

由于 p2_arr 指向一个大小为 10 的数组,您需要分配一个大小为 10 的数组的地址:

int (*p2_arr)[10] = &arr;   

关于c - 如果 int (*p_arr)[10] 被定义为指向大小为 10 的数组的指针,那么为什么编译器在这种情况下会显示警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19454312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com