c - 指向给出不兼容指针类型警告的数组的指针

标签 c pointers

当我编译以下代码时,我收到警告:从不兼容的指针类型赋值[默认启用]:

int main() {
     int (*aptr) [5] = NULL;
     int arr[5] = {1,2,3,4,5};

     aptr = &arr[0];

     printf("aptr = %p\n arr = %p\n", aptr, &arr[0]);
     return 0;
}

我得到了正确的输出:

aptr = 0xbfcc2c64
arr = 0xbfcc2c64

但为什么我会收到不兼容指针类型的警告?

最佳答案

您声明了一个指向整个数组的指针。你为什么要让它指向第一个元素

如果你想用 int (*)[5] 类型声明你的 aptr,就像你的例子一样,并让它指向 arr,那么这就是你应该如何设置指针值

aptr = &arr;

您现在在代码中尝试将 int * 值分配给 int (*)[5] 类型的指针。这些是不同的类型,这就是您收到警告的原因(实际上是违反约束,也称为错误)。

关于c - 指向给出不兼容指针类型警告的数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17482921/

相关文章:

c - 如何在 C/Objective-C 中将字符串文字拆分为多行?

c - 剖析 C 应用程序中的最大内存使用量 - linux

c - C 中使用数组、入栈、弹出和显示的堆栈实现

c - 使用 fork 时 while(wait(NULL)){} 和 while(wait(NULL) > 0){} 有什么区别

ios - 代码 : Working In ARC and NSArrays

c - 在 C 中维护字符串数组的更好方法

c++ - 将 strtok 分隔符设置为两个字符

c - elf文件中的全局变量在哪里

objective-c - 在 Objective C 中使用指针的最大优势是什么

c++ - 具有包含 void* 的结构的函数的 const 正确性和参数