#include <stdio.h>
int main(void){
char c[8];
*c = "hello";
printf("%s\n",*c);
return 0;
}
我最近在学习指针。上面的代码给了我一个错误 - 赋值从指针生成整数而没有强制转换[默认启用]。 我在SO上发布了关于此错误的一些帖子,但无法修复我的代码。 我将c声明为8个char的任何数组,c具有第一个元素的地址。所以,如果我做* c =&#34; hello&#34;,它将在一个字节中存储一个字符,并根据需要使用尽可能多的后续字节,用于&#34; hello&#34;。 请有人帮我确定问题并帮我解决问题。 标记
答案 0 :(得分:1)
我将c声明为8个char的任何数组,c具有第一个元素的地址。 - 是的
所以,如果我做* c =“hello”,它将在一个字节中存储一个字符,并根据“hello”中的其他字符使用尽可能多的后续字节。 - 否。“hello”(指向某个静态字符串“hello”的指针)的值将被分配给* c(1byte)。 “hello”的值是指向字符串的指针,而不是字符串本身。
您需要使用strcpy将字符数组复制到另一个字符数组。
const char* hellostring = "hello";
char c[8];
*c = hellostring; //Cannot assign pointer to char
c[0] = hellostring; // Same as above
strcpy(c, hellostring); // OK
答案 1 :(得分:1)
#include <stdio.h>
int main(void){
char c[8];//creating an array of char
/*
*c stores the address of index 0 i.e. c[0].
Now, the next statement (*c = "hello";)
is trying to assign a string to a char.
actually if you'll read *c as "value at c"(with index 0),
it will be more clearer to you.
to store "hello" to c, simply declare the char c[8] to char *c[8];
i.e. you have to make array of pointers
*/
*c = "hello";
printf("%s\n",*c);
return 0;
}
希望它能帮助.. :)