赋值从指针生成整数而不在 C 中强制转换
assignment makes integer from pointer without cast in C
我的DATABASES中有一个项目class,老师要求我们创建一个程序来计算基于属性的关系的CLOSURE。
我输入了计算闭包的函数的第一部分,但编译器不断发出此警告:
warning : assignment makes integer from pointer without cast
这里是函数和结构:
typedef struct df {
char PG[20];
char PD[20];
} DF;
char *Closure(DF *T, char *C, int sizeFD, char att, int n) {
int i, j;
j = 0;
C[j] = att;
for (i = 0; i < sizeFD; i++) {
if (T[i].PG == &att) {
j++;
C[j] = T[i].PD; // this is where there's the warning
}
}
if (j == n)
exit(EXIT_SUCCESS);
return C;
}
我需要你的帮助,请指点我正确的方向。
违规陈述是:
C[j] = T[i].PD;
C
是一个char *
,因此C[j]
是一个char
,不能赋值T[i].PD
,这是一个数组,decays 作为指向 char
的指针。
请注意,T[i].PG == &att
始终为假,因为 att
是局部变量,而 T[i].PG
是结构中的数组。
不清楚代码试图做什么。
C[j]=T[i].PD;
我们来分解一下。首先 C 是 char* 类型和
C[j] ==> *(C + j) // type char
意思是你写的是C+j所在位置的值。
下一个 T[i].PD 是一个 char* 但 C[j] 是 char 类型。
现在 C 是一种有点奇怪的语言,因为它处理这些类型的转换并将 T[i].PD 视为整数。对于 C,一切都是底层的,它相信你知道类型之间的关系。
我的DATABASES中有一个项目class,老师要求我们创建一个程序来计算基于属性的关系的CLOSURE。 我输入了计算闭包的函数的第一部分,但编译器不断发出此警告:
warning : assignment makes integer from pointer without cast
这里是函数和结构:
typedef struct df {
char PG[20];
char PD[20];
} DF;
char *Closure(DF *T, char *C, int sizeFD, char att, int n) {
int i, j;
j = 0;
C[j] = att;
for (i = 0; i < sizeFD; i++) {
if (T[i].PG == &att) {
j++;
C[j] = T[i].PD; // this is where there's the warning
}
}
if (j == n)
exit(EXIT_SUCCESS);
return C;
}
我需要你的帮助,请指点我正确的方向。
违规陈述是:
C[j] = T[i].PD;
C
是一个char *
,因此C[j]
是一个char
,不能赋值T[i].PD
,这是一个数组,decays 作为指向 char
的指针。
请注意,T[i].PG == &att
始终为假,因为 att
是局部变量,而 T[i].PG
是结构中的数组。
不清楚代码试图做什么。
C[j]=T[i].PD;
我们来分解一下。首先 C 是 char* 类型和
C[j] ==> *(C + j) // type char
意思是你写的是C+j所在位置的值。
下一个 T[i].PD 是一个 char* 但 C[j] 是 char 类型。
现在 C 是一种有点奇怪的语言,因为它处理这些类型的转换并将 T[i].PD 视为整数。对于 C,一切都是底层的,它相信你知道类型之间的关系。