目前我正在学习C并试图了解这些说明。 他们真的不一样吗? ++*argv *argv++ *(++argv) *(argv++) 谢谢!
每当我运行程序“Assignment在没有强制转换的情况下从Integer发出指针”时,我都会收到此错误。 我的代码写在下面….请帮助…谢谢 struct student { char studentID[6]; char name[31]; char course [6]; }; struct student *array[MAX]; struct student dummy; int recordCtr=0; int read(){ FILE *stream = NULL; int ctr; char linebuffer[45]; char delims[]=”, “; char *number[3]; char *token = NULL; stream = fopen(“student.txt”, “rt”); if (stream == NULL) stream = fopen(“student.txt”, “wt”); else { printf(“\nReading […]
由于某种原因,我的函数只返回我的数组中的第一个元素,我无法弄清楚为什么数组的其余部分超出范围。 该函数接受两个整数数组,添加它们各自的元素,并将总和放入返回的第三个数组中。 这是我的代码: #include /* count digits, white space, others */ int *sumarrays(int arr1[], size_t arr1len, int arr2[], size_t arr2len); void main() { int arr1[10]; size_t arr1len = 10; int arr2[10] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; size_t arr2len = 10; int i; int *x; arr1[0] = 2; […]
在尝试实现一个function来改变菜单上的状态,但进入该function时我的参考丢失 void gotoLowerlevel(Menu *item) { if (item->chld != 0x00){ item = item->chld; } } 函数调用以这种方式完成,currentState是指向struct Menu的指针 case ENTER: if (cnsle->inMenuFlag == 0) { cnsle->inMenuFlag = 1; cnsle->currentState = cnsle->root; gotoLowerlevel(cnsle->currentState); displayMenu(cnsle->currentState,&cnsle->display); } 我不知道为什么这不起作用。 有任何想法吗..??
我需要有人来编辑标题,我找不到更好的标题。 假设有一个名为source.exe简单程序: #include int main() { int a = 5; printf(“%p”, &a); return 0; } 我想编写另一个应用程序, change.exe ,它改变a上面的内容。 我试过这样的事情: int main() { int * p = (int*) xxx; // xxx is what have printed above *p = 1; printf(“%d”, *p); return 0; } 它不起作用。 假设我拥有管理员权限,有没有办法做我上面尝试过的事情? 谢谢。
有一系列结构。 static field fields[xsize][ysize]; 我想在function上改变它 void MoveLeft(pacman *Pacman, field **fields,int **play) 但是,当我这样发送它 MoveLeft(&Pacman,fields,play); 我有一个错误。 场 – 结构 typedef struct { blossom blossoms; wall walls; }field; 开花和墙壁 – 另一个结构
我理解不能保证函数的参数将被调用的顺序,但是,如果有一个函数调用作为参数,是不是保证会首先调用该函数? 我帮助学生在实验室进行编程的入门课程,他们应该创建一个递归因子函数,它接收n(对于n!)和一个指向整数的指针,该整数将用于计算函数调用,然后它们是应该打印结果(n,n!和count)。 许多人抱怨他们使用指针是错误的,所以我查看了代码,他们都是这样的: int fat(int n,int *count) { (*count)++; if(n>1) { return n * fat(n-1,count); } return 1; } int main() { int n, count=0; do { printf(“Write n for fat (n >= 0): “); scanf(“%d”, &n); }while(n<0); printf("Input: %d. Output: %d.\nFunction called %d times.\n\n", n, fat(n, &count), count); printf("%d times\n",count); return 0; } 用gcc编译(Debian […]
我有一个struct成员作为char *并将其分配给结构初始化的字符串文字“John”,如下所示。 字符串打印精细与printf。 但是,如果我使用fwrite将此字符串写入文件,则在文件中我读回垃圾。 如果我使用char数组而不是char *(如图所示在结构中注释掉),并将其写入文件,我可以按预期读回文件中的字符串。 我无法理解这一点。 在两种情况下都不应该使用指针并将正确的字符串写入文件? 此外,如果我声明一个单独的char *并将其指向字符串文字并将其写入文件,我可以按预期读回。 非常感谢您提供任何解释方面的帮助。 (我在Windows上使用带有Mingw编译器的codeblocks IDE)。 更新:包括使用的实际代码 int main() { struct person { //char name[20]; char* name; int age; }; struct person p1 = {“John”, 25}; printf(“%s\n”, p1.name); FILE* fp = fopen(“test.txt”, “w”); fwrite(&p1, 1, 10, fp); return 0; }
在尝试自己学习C的同时,我遇到了这个我想要开发的简单程序。 它只是试图利用指向指针数组的指针来制作类似于矩阵的东西。 我在Windows上编译,当我运行它时,它只是崩溃,同时,在Linux上尝试这个代码它说segmentation fault ,这是因为函数参数是数组吗? 我在这做错了什么? #include #include void initializeArray(float** array, int size); void printArray(float** array, int size); int main() { float** array_1 = NULL; int array_size = 3; initializeArray(array_1, array_size); // Free memory from array for (int i = 0; i < array_size; i++) { free(array_1[i]); } free(array_1); return 0; } void initializeArray(float** array, […]
数组的名称是指向第一个元素的指针。 那么为什么一个字符数组不能分配另一个数组呢? #include int main() { char str1[]=”Hello”; char str2[10]; char *s=”Good Morning”; char *q; str2=str1; /* Error */ q=s; /* Works */ return 0; }