【问题标题】:Check out this error (pointers, C, printf)检查这个错误(指针、C、printf)
【发布时间】:2021-04-03 03:09:07
【问题描述】:
#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'

我做错了什么?

【问题讨论】:

    标签: c pointers printf character


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您正在尝试分配一个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);
             }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多