Check out this error (pointers, C, printf)

Viewed 58
#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);
   }
}

Not sure whats going on by when compiled there is an error that says:

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

What did I do wrong?

2 Answers

You are try to assign a char

letters[i]

to a char*

char* p;

in your loop:

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

The correct version would look like:

#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);
       }
    }

When you assign letters[i] to p, you are assigning a char to a char *

Related