One*_*ero 1 c struct pointers allocation initialization
好的,这是结构的定义:
typedef struct {
int first;
int last;
int count;
char * Array [50];
} queue;
Run Code Online (Sandbox Code Playgroud)
我使用另一个函数来初始化它
void initialize(queue * ptr){
ptr=malloc(sizeof(queue));
ptr->first=0;
ptr->last=0;
ptr->count=0;
}
Run Code Online (Sandbox Code Playgroud)
然后我用printf先打印出来,最后打印并计数.这三个都应该是零.然而,我实际得到的是,正如我预期的那样,count是0,但是第一个和最后一个是两个非常大的奇怪数字,并且每次运行程序时它们都会改变.谁能告诉我这里有什么问题?谢谢.
您正在按值传递指针.该函数更改了它接收的参数的副本,但调用者的指针未被修改,可能是未初始化的.
您需要更改函数以获取queue**并传递要初始化的指针的地址.
或者,您可以返回指针而不是将其作为参数传递.这是一种更简单的方法.