C语言 指向无符号字符数组的无符号字符指针

5t7ly7z5  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(206)

我尝试创建一个无符号字符数组,并创建一个指向数组第一个位置的指针,但我一直收到一个错误。以下是我的代码和错误:

void initBuffer
{
      unsigned char buffer[size];
      unsigned char *ptr;
      ptr = &buffer;
}

我怀疑这是一个非常简单的类型错误,因为我是C新手,不知道如何修复它。

ddrv8njm

ddrv8njm1#

&buffer的类型为unsigned char (*)[size]
ptr的类型为unsigned char *
这两种类型是 * 不 * 一样的。就像编译器告诉你的那样。
假设你想让ptr指向buffer的第一个元素,那么你需要使用&buffer[0],它有正确的类型,这就是普通的buffer会 * 衰减 * 到的:

ptr = buffer;
clj7thdc

clj7thdc2#

我对您提供的代码做了一个小改动,ptr = &buffer[0];

#include <stdio.h>
int main() {
      unsigned char buffer[] = {'A','B','C','D'};
      unsigned char *ptr;
      ptr = &buffer[0];    // ptr, points to first element of array
      for(int i=0; i<4; i++)
          printf("%c", ptr[i]);
      return 0;
}

相关问题