Tag: 数组

声明一个未知大小的数组

这不是特定于任何编程语言,问题是“在n个数组的数组中找到指定值的索引。 现在我的问题是,在下面的代码中你可以声明一个数组我是如何做到的。 {int n; read(n); int array[n]; …… 或者这是允许的吗? {int n; array[n]; read(n) 我想第一个是正确的。 提前致谢。

具有不同数据类型的文本文件到结构数组

我必须解析具有3种不同数据类型的文本文件。 我希望它保存在一个包含三个成员的结构数组中。 我的文本文件如下所示: AB 45.78965 AC 35.46731 BC 46.78695 我正在阅读它的程序如下,它不起作用。 我究竟做错了什么? #include struct gra { char from; char to; double w; }; int main () { FILE *fp = fopen(“graph.txt”, “r”); int i = 0; while (!feof(fp)) { fscanf(fp, “%[^\t]”, &graph[i].from, &graph[i].to, &graph[i].w); i++; } fclose(fp); }

如何在C中声明一个常量函数指针数组?

我需要声明一个指向函数的指针数组,如下所示: extern void function1(void); extern void function2(void); … void (*MESSAGE_HANDLERS[])(void) = { function1, function2, … }; 但是,我希望将数组声明为常量 – 数组中的数据和指向数据的指针。 不幸的是,我不记得在哪里放置const关键字。 我假设在这种情况下,实际指针MESSAGE_HANDLERS已经是常量,因为它被声明为数组。 另一方面,如果声明如图所示,那么数组中的函数指针是否可以在运行时更改?

什么是输出? 请解释一下,考虑到我是c的新手

int a[3][4] = { 1,2,3,4, 5,6,7,8, 9,10,11,12, }; printf(“%u %u %u \n”, a[0]+1, *(a[0]+1), *(*(a+0)+1));

c语言的memset函数

我现在正在研究memset函数,但所有示例都与char数组有关,如下所示: char a[100]; memset(a, 0, 100); 它会将此char数组中的每个元素设置为0。 我想知道memset是否可以应用于int数组或float数组?

如何将字符值从结构写入串口并转换为整数值?

struct MemoryTag1; typedef struct MemoryTag1{ char a[8]= {‘+’,’0′,’2′,’6′,’.’,’5′,’EA’,’\r’}; // setpoint temperature value char b[8]= {‘-‘,’0′,’2′,’4′,’.’,’5′,’EB’,’\r’}; char c[6]= {‘+’,’0′,’2′,’0′,’EC’,’\r’}; }Memory1; //这是一个消息结构,我想通过串行接口(RS232)传输,然后转换为整数值。 请指导我。

如何在函数内获取数组大小?

我无法找到从函数中获取数组大小的方法。 这是我的代码: #include void printBuff(char *buf); int main() { char arr[12] = “csdlnclskjn”; printf(“Array size: %d, element size: %d. “,sizeof(arr), sizeof(arr[0])); printBuff(arr); return 0; } void printBuff(char *buf){ printf(“Array size: %d, element size: %d.”,sizeof(buf), sizeof(buf[0])); } 如上所示,printBuff与main函数中的第二行相同。 但是,输出是不同的: 数组大小:12,元素大小:1。数组大小:4,元素大小:1。 考虑一下,我理解为什么printBuff()方法中的输出为4。 实际上,arr是指向数组第一个元素的指针。 在32位体系结构上,sizeof(arr)将返回4,在64位上它将返回8.我不明白为什么sizeof(arr)返回数组的大小而不是字节数在main()函数中使用时的指针。 毕竟,arr,当在main()中调用时,仍然是一个指针,对吧? 所以我的问题是: 为什么sizeoff()的解释会有所不同,具体取决于使用它的上下文? 这取决于什么? 如何从函数中获取实际的数组大小(数组中的元素数),而不将大小作为参数传递,而不使用迭代数组的方法,同时递增计数器直到达到’\ 0′ – 只是无论上下文如何,获取数组大小的最简单方法。 顺便提一下,负责记住数组大小的编译器/系统在哪里存储数组的大小? 它是如何与数组相关联的?它是如何检索的? 我想使用sizeof(buf),/ sizeof(buf [0])迭代数组作为数组的大小,但显然这是不可能的。

使用xor解释在数组中找到两个非重复的整数

给定[1,1,4,5,5,6]我们可以发现4和6是非重复整数。 有一个使用XOR的解决方案 。 这是作者提出的算法: #include #include /* This finction sets the values of *x and *y to nonr-epeating elements in an array arr[] of size n*/ void get2NonRepeatingNos(int arr[], int n, int *x, int *y) { int xor = arr[0]; /* Will hold xor of all elements */ int set_bit_no; /* Will have only single […]

malloc结构指针数组与结构数组

有什么区别 struct mystruct *ptr = (struct test *)malloc(n*sizeof(struct test)); 和 struct mystruct **ptr = (struct test *)malloc(n*sizeof(struct test *)); 他们都工作正常,我只是好奇两者之间的实际差异。 第一个是否分配了一个结构数组,而第二个是结构指针数组? 另一种方式? 另外,哪一个占用内存较小?

“多维数组指针+1”的值不匹配

这是问题计划: #include int main() { int apricot[2][3][5]; int (*r)[5]=apricot[0]; int *t=apricot[0][0]; printf(“%p\n%p\n%p\n%p\n”,r,r+1,t,t+1); } 它的输出是: # ./a.out 0xbfa44000 0xbfa44014 0xbfa44000 0xbfa44004 我认为t的维度值应为5,因为t是最后一个维度,事实匹配(0xbfa44004-0xbfa44000 + 1 = 5) 但是r的维度值是0xbfa44014-0xbfa44000 + 1 = 21,我认为它应该是3 * 5 = 15 ,因为3和5是最后两个维度,那么为什么差异是21?