我创建了一个函数,该函数返回指向自制结构对象的指针。然后,我声明了另一个指针,我将其设置为等于上述函数返回的指针。我得到一个错误“赋值使整数指针不带强制转换”-但我不明白为什么我要强制转换。。。因为所有这些指针都声明为同一类型。
在disk.h中,我定义了以下内容:
struct generic_attribute{
char *name;
int current_value;
int previous_value;
//int time_series[500];
};
在disk.c中,我为泛型属性创建了一个构造函数,如下所示:
#include "disk.h"
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
struct generic_attribute* construct_generic_attribute(char* name, int current_value){
struct generic_attribute *ga_ptr;
//ga_ptr = (struct generic_attribute*) malloc (sizeof(struct generic_attribute));
ga_ptr = malloc (sizeof (struct generic_attribute));
ga_ptr -> name = name;
ga_ptr -> current_value = current_value;
ga_ptr -> previous_value = 0;
return ga_ptr;
}
在disk_test.c中,我要测试此构造函数:
#include "disk.h"
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
void test_generic_attribute_constructor(char* name, int current_value){
struct generic_attribute* ga_ptr;
ga_ptr = construct_generic_attribute(name, current_value);
printf("%i\n", construct_generic_attribute(name, current_value));
}
int main() {
test_generic_attribute_constructor("test", 2000);
}
我在这条线上看到错误:
ga_ptr = construct_generic_attribute(name, current_value);
我不明白为什么。
ga_pointer
被声明为指向类型struct generic_attribute
的指针。函数的返回也是如此。我是新来的C,所以我可能会误解这一切是如何运作的。 最佳答案
您没有在construct_generic_attribute()
中声明disk.h
,因此在看到函数调用时,编译器假定它具有默认签名,即int construct_generic_attribute();
。
谢谢你质疑这一点,而不是盲目地增加演员阵容(这似乎是可行的!)
关于c - 在C中转换指标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31032971/