定义struct (int a; char b[12]; short c;} temp;则temp->c=
时间: 2024-05-09 19:15:18 浏览: 9
这个题目有一些问题,应该是定义一个结构体类型 temp,而不是定义一个结构体变量 temp。如果我们改为“定义一个结构体变量 temp”,则答案为:temp.c=
但是,如果我们按照题目本身的意思,定义一个结构体类型 temp,则答案为无法确定,因为结构体类型只是一个模板或者说是一个蓝图,我们需要使用这个模板来定义一个具体的结构体变量,才能够对结构体变量的成员进行赋值操作。因此,正确的代码应该是:
```
struct temp {
int a;
char b[12];
short c;
};
struct temp my_temp; // 声明一个结构体变量 my_temp
my_temp.c = 0; // 对 my_temp 的成员变量 c 进行赋值操作
```
其中,my_temp.c=0; 表示将 my_temp 结构体变量的成员 c 赋值为0。
相关问题
定义struct {int a; char b[12]; short c;} temp;则temp->c=
在这个结构体中,变量 `temp` 是一个结构体类型的变量,它包含了一个整型变量 `a`,一个长度为12的字符数组 `b`,以及一个短整型变量 `c`。
要给 `temp` 的成员变量 `c` 赋值,可以使用点运算符 `.`,具体方式为:
```c++
temp.c = 10;
```
这会将 `temp` 的成员变量 `c` 的值设置为 10。需要注意的是,这里使用的是点运算符 `.` 而不是箭头运算符 `->`,因为 `temp` 不是指针类型。
typedef struct { unsigned short *Buf; unsigned short *PrtbufVal; unsigned char BufLen; } AdcTypeS; int main(void) { static unsigned char temp = 0; static unsigned char t = 0; static unsigned char i = 0; unsigned long a[56] = {1,2,3,4,5,6,7.8,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28.29,30,31,32,33,34,35,36,37,38,39,40,41,46,43,44,45,46,47,48,49,50,51,52,53,54,55}; unsigned long *p; p = a; unsigned short aBuf[10]; unsigned short bBuf[11]; unsigned short cBuf[12]; unsigned short aBufcn = 0; unsigned short bBufCnt = 0; unsigned short cBufCnt = 0; AdcTypeS adc[3] = { {aBuf, &aBufcn, 10}, {bBuf, &bBufCnt, 11}, {cBuf, &cBufCnt, 12} }; while (++t <= 56) { if ((*adc[temp].PrtbufVal)++ >= adc[temp].BufLen) { *adc[temp].PrtbufVal = 0; } adc[temp].Buf[*adc[temp].PrtbufVal] = (unsigned short)p[i]; i++; if (++temp >= 3) { temp = 0; } printf("%d, %lu, %d, %lu\n", temp, *adc[temp].PrtbufVal, adc[temp].Buf[*adc[temp].PrtbufVal], p[i]); } return 0; } }当*adc[temp].PrtbufVal为0时,adc[temp].Buf[adc[temp].PrtbufVal]的值是不对,是随机数,为什么,怎么改
当`*adc[temp].PrtbufVal`为0时`adc[temp].Buf[adc[temp].rtbufVal]`的值是随机数的原因是因为在赋值之前,先对`*adc[temp].PrtbufVal`进行了自增操作,导致索引值不正确。
要修复这个问题,你可以将自增操作移动到赋值操作之后。修改代码如下:
```c
if (*adc[temp].PrtbufVal >= adc[temp].BufLen) {
*adc[temp].PrtbufVal = 0;
}
adc[temp].Buf[*adc[temp].PrtbufVal] = (unsigned short)p[i];
(*adc[temp].PrtbufVal)++;
```
这样就保证了先进行赋值操作,然后再自增`*adc[temp].PrtbufVal`的值。这样可以避免在索引为0时出现随机数的问题。