69,382
社区成员
发帖
与我相关
我的任务
分享
char* STR_CHOICE_D[50];
U8 str[70];
for(i.....){
//此处改变str的值
STR_CHOICE_D[i]=str;
}
MessageBox( STR_CHOICE_D[0],"提示",MB_OK); //期望应该等于 A 实际输出 C
MessageBox( STR_CHOICE_D[1],"提示",MB_OK); //期望应该等于 B 实际输出 C
MessageBox( STR_CHOICE_D[2],"提示",MB_OK); //期望应该等于 C 实际输出 C
//也就是所有数组都保存着最后一个字符串,我猜是因为str赋值给STR_CHOICE_D[i]的时候赋的是地址,所有下标都指向的同一个地址
char* STR_CHOICE_D[50];
char str[70];
char *p;
int n;
p=str;
for(int i=0;i<3;i++) {
n=sprintf(p,"%c",'A'+i);
STR_CHOICE_D[i]=p;
p+=n+1;
}
MessageBox( STR_CHOICE_D[0],"提示",MB_OK); // A
MessageBox( STR_CHOICE_D[1],"提示",MB_OK); // B
MessageBox( STR_CHOICE_D[2],"提示",MB_OK); // C
char* STR_CHOICE_D[50];
char str[70];
char *p;
int n;
p=str;
for(int i=0;i<3;i++) {
n=sprintf(p,"%c",'A'+i);
p+=n+1;
STR_CHOICE_D[i]=p;
}
MessageBox( STR_CHOICE_D[0],"提示",MB_OK); // A
MessageBox( STR_CHOICE_D[1],"提示",MB_OK); // B
MessageBox( STR_CHOICE_D[2],"提示",MB_OK); // C
U8 str[70];
这个是什么?