当我尝试使用并访问指向我的结构的指针时,我不断收到”dereferencing pointer to incomplete type”的恼人信息…. 例如在我的user.h文件中,我有这个typedef : typedef struct FacebookUser_t* User; 在我的user.c文件中包含user.h我有这个结构: struct FacebookUser_t {…}; 所以,当我需要一个指向该结构的指针时,我只使用User blabla; 它似乎工作,我将它添加到通用列表作为Element ,它是void* ,这是list.h的typedef: typedef void* Element; 当我从包含Element ( User )的列表中找回一个节点时,我无法访问它的成员,我做错了什么? 谢谢!
我目前拥有的是一个简单的函数,它基本上只是在给定参数指针的情况下重新分配指针但是我收到一个错误,说我正在使用其中一个未初始化的变量。 这就是我所拥有的,错误是在线上投掷* x = * k; float * program(const int *k) { float *x; *x = *k; return x; } 这必须是一个非常简单的修复,但我觉得我只是错过了它。
这是我的代码,我得到一个分段错误,我不知道为什么……我正在创建一个n是它的大小的网格, tab是一个数组,他的类型是cellule:一个单元格有2个值。 所以我在函数creer_grille创建了一个数组我malloc它(大小可以是4 6或8)并且我用-1和0初始化单元格值。然后在下面的函数中我正在测试creer_grille函数。 typedef struct { int val; int initial; } cellule; typedef struct { cellule *tab; int n; } grille; grille *creer_grille(int n) { grille *g; int i; assert(n == 4 || n == 6 || n == 8 && “Taille de la grille différent de 4,6 ou 8”); g->n = n; g […]
我编写了一段代码,试图在目录及其子文件夹中搜索两个AIFF文件,并使用LibAIFF库导入然后对它们执行一些处理操作。 第1部分:在目录中搜索文件 对于程序的这一部分,我需要查找具有已知名称的文件(可以将其视为相同的AIFF文件,但文件名不同)(例如SineSweepA.aiff和SineSweepB.aiff)然后构建它的绝对路径(我不知道的长度(因为我的程序需要在不同的计算机上工作,其中AIFF可以位于MainDirectory中的不同子文件夹中 – 请参阅下面的代码)但知道长度少于200个字符)。 我能够使用以下代码成功并始终如一地执行此操作: void file_search(char* parentDir, char* subFolder, char* filenamePrefix, char* tempString, char* tempFilepath, int* foundFlag, int* level); int32_t *import_sweeps(char* sweepFilepath, uint64_t* numSamples, int* numChannels, double* samplingRate, int* bitDepth, int* segmentSize, int* importFlag); int main() { … char MainDirectory[200] = “/Users/rrr/Documents/Foldername1/”; char tempFilepath[200], tempFilepathR[200], parentDir[200], filenamePrefix[200], subFolder[200], tempString[200]; int level = 0, […]
struct place { char name[80+1]; double latitude; double longitude; }; struct node { struct place city; struct node *next; }; struct node *head; head head -> city head -> next head -> city -> name head -> next ->city.name 这些任务总是让我在考试中失分,任何人都可以解释一下吗? 它询问提到的变量是什么类型,我想像head这样的东西只是一个指向整个结构node值的指针?
下面是我试图打印char变量和指针的默认值/值的代码。 但无法在控制台上看到它。它是默认值还是只能读取ASCII范围。 #include int main() { char c, *cp; printf(“\nValue of char c:%c\n”, c); printf(“\nValue of char ptr:%c\n”, *cp); return 0; }
我总是这样宣告 char *c = “line”; 和…一样 char c[] = “line”; 所以我做到了 char **choices = { “New Game”, “Continue Game”, “Exit” }; 这给了我一个不兼容的指针类型,在哪里 char *choices[] = { “New Game”, “Continue Game”, “Exit” }; 没有。 理解这个有什么帮助吗?
我有这个function int rt_exist(struct route_entry* prev_rte) { prev_rte = rte_head; //This doen’t assigns rte_head to prev_rte return 0; } 其中rte_head是初始化的struct route_entry *指针变量。 但在上述情况下,“prev_rte”未分配rte_head的值。 顺便说一下,如果我这样做的话 int rt_exist(struct route_entry* prev_rte) { struct route_entry* rte_new; rte_new = rte_head; //But this can return 0; } 上述分配顺利进行。 当指针变量作为函数参数传递时会出现问题。 这是一个奇怪的问题,细节很少,但是有人能指出我可能的方向或我可能做错的事情。
释放后指针的值是否变为NULL? int* p = malloc(sizeof(*p)); free(p); if(p==NULL) printf(“Null\n”); else printf(“Not null\n”); 输出: Not null 好吧,我假设没有; 无论如何,我今天早些时候提出了一个问题: 在这里查看: C – 如何释放动态分配的内存? List* head1 = NULL; insertFront(&head1, 1); insertFront(&head1, 2); print(head1); while (head1) { List *temp = head1; head1 = head1->next; free(temp); } if(head1 == NULL) printf(“Null\n”); else printf(“Not null\n”); 这种情况下的输出: Null 在这种情况下,在释放head1(节点也)后,head1变为null,不是吗? 最后,我错过了一些概念吗? head1为null,但p不是。 我的问题是: 为什么head1和p之间的值不同?
该程序返回一个指向结构的指针 。 当我打印内容时, 名称没有正确显示,其他两个变量正在正确打印。 可能是什么问题呢? 这是C中的代码 #include struct student { char name[20]; int marks; int rank; }; struct student stu; struct student *create(); void main() { struct student *ptr; ptr = create(); printf(“%s\t %d\t %d\t”,ptr->name,ptr->marks,ptr->rank); } struct student *create() { struct student stu = {“john”,98,9}; struct student *ptrr; ptrr = &stu; return ptrr; }