我在尝试填充此数组时遇到问题。有人可以解释出现了什么问题吗?
#include<stdio.h>
#include<stdlib.h>
typedef struct T
{
char TpCode[4];
}T;
int main(int argc, char **argv)
{
T *tp;
tp->TpCode =(char *)malloc(4* sizeof(char));
}
答案 0 :(得分:2)
在您的代码示例中,您不希望为数组本身分配空间,而是希望分配空间来容纳struct T
。这就是你应该做的事情:
int main(int argc, char **argv){
T *tp;
tp = malloc(sizeof(*tp));
}
由于数组是struct T
的一部分,因此为结构分配空间会隐式地为结构内的数组分配空间。
答案 1 :(得分:0)
对于数组,您不应使用malloc
。
char TpCode[4];
不使用malloc就可以使用。
答案 2 :(得分:0)
这是未定义的行为
TpCode
。这是因为TpCode
- 作为固定长度的数组 - 是实际结构的一部分。
您需要在之前使用它创建T
的实例。写T tp
就足够了。或者,T *tp = malloc(sizeof(T));
。我将演员放在=
的右侧是故意的。