检查这个错误(指针,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);
}
}
#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);
}
}