赋值从指针生成整数而没有强制转换

在下面的代码中,在将len1分配给数组a出现错误错误是

 assignment makes integer from pointer without a cast 

请帮我。

 void main() { int i=0; char a[7]={0x00,0xdc,0x01,0x04}; char str[70] = "123456644454464644456456456564564544132131113132132"; int len=0; char len1[50]={}; len = strlen(str); printf("The Length is : %02x", len); printf("The Length is : %d", len); sprintf(len1,"0x%02x",len); printf("The Len1 value : %s", len1); a[4]=len1; // This line causes the error. for(i=0;i<=7;i++) { printf("%05c",a[i]); //printf("%x",a[i]); } } 

您的声明中的(子)表达式有哪些类型?

 a[4] = len1; 

len1是一个包含50个字符的数组(类型为char[50] ),但在上面的表达式中,它衰减为指向其第一个元素的指针。 这是char*类型的值。
a[4]char类型的对象。

您不能将char*分配给char*类型的对象!

我想也许你想要的

 /* BEWARE BUFFER OVERFLOWS */ strcpy(a+4, len1); /* a+4 is of type `char*`, len1 decays to `char*` */ 

问题是a[4]是一个char ,而len1是一个chars数组!

当你申报时

 char a[7] = {...} 

你说你希望a成为一个chars数组,并且你将a的值初始化为{...}的值。

当你说a[4]时,你说a[4]是从a的位置开始4并使用那里的值,这是一个char 。 但是len1是一个char pointer因此当你将它分配给a[4]你会得到警告!