赋值从指针生成整数而没有强制转换
在下面的代码中,在将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]
你会得到警告!