检查这个错误(指针,C,printf)

Check out this error (pointers, C, printf)

#include <stdio.h>

void main() {

   char letters[] = "sjdfhbakshfoweiuh23423";
   char* p;
   int size = sizeof(letters);
   for (int i = 0; i < size; i++) {
       p = letters[i];
       printf("Address: %p \n", p);
   }
   for (int i = 0; i < size; i++) {
       p = letters[i];
       printf("Charachter: %c \n", p);
   }
}

不确定编译时发生了什么,出现错误:

Warning C4047   '=': 'char *' differs in levels of 
indirection from 'char'

我做错了什么?

当您将 letters[i] 分配给 p 时,您将 char 分配给 char *

您正在尝试分配 char

letters[i]

char*

char* p;

在你的循环中:

 for (int i = 0; i < size; i++) {
    p = letters[i];
    printf("Address: %p \n", p);
   }

正确的版本如下:

#include <stdio.h>

    void main() {
    
       char letters[] = "sjdfhbakshfoweiuh23423";
       char p;
       int size = sizeof(letters);
       for (int i = 0; i < size; i++) {
           p = letters[i];
           printf("Address: %p \n", p);
       }
       for (int i = 0; i < size; i++) {
           p = letters[i];
           printf("Charachter: %c \n", p);
       }
    }