Tag: 数组

索引超过C数组的末尾

我在C中编写了一个简短的程序,只是为了看看当你索引数组末尾时会发生什么。 我发现它主要产生随机值(我知道它们实际上并不是随机的)直到一个点(在这种情况下52个索引超过结束),它每次产生0。 超过这一点的每个值和程序崩溃。 为什么是这样? 是程序结束分配内存空间? main() { int ar[4]; ar[0] = 99; ar[1] = 45; printf(“array: %d, %d random value: %d”, ar[0], ar[1], ar[55]); } 编辑:我还发现,如果我改变这个值总是最终为0(即ar [55] = 1000),那么程序的返回码就会增加。

C / C ++:这是未定义的行为吗? (2D数组)

如果我以下列方式浏览2D数组的元素,它是不确定的行为吗? int v[5][5], i; for (i = 0; i < 5*5; ++i) { v[i] = i; } 然后,它甚至编译? (我现在不能尝试,我不在家。)如果没有,那么想象我以某种方式获得了指向第一个元素并使用taht而不是v[i]的指针。

检查指针是否指向给定数组

所以我有一个函数返回一个指向数组A中元素的指针。我有另一个函数将该指针作为参数。 但是,我需要该函数来处理它可能传递完全任意指针的可能性。 有没有办法能够检测指针是否指向结构中的某个位置? 在这种情况下,我的arraysA? 我见过类似的关于C ++的问题,但不是用C.

“array”和“&array ”完全可以互换吗?

是的,以前曾经多次询问过,但我想知道哪一个更合适? typedef struct { int a; int addr[8]; } usr_command; usr_command* p_usr_command; int foo(int* parameter) {} 那么哪一个不太容易出问题? foo(p_usr_command->addr); 要么 foo(&p_usr_command->addr[0]); ?

标量初始值设定项的多余元素,用于指向int数组的指针

我正在研究K&R(例如5-9),我试图转换原始程序的2D数组 static char daytab[2][13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; 使用指向13个int数组的指针 static char (*daytab)[13] = { {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, […]

arrays数组,大小不同

我有一个数组,每个单元格都有数组。 例如,大数组称为arr : int a[3] = {3, 2, 1}; int b[2] = {2, 1}; int *arr[2] = {a, b} 现在问题是,如果我想在大arrays内打印小arrs。 这是我的代码: #include void printArr(int arr [], int n) { for (int i = 0 ; i < n ; i++) { printf("%d ", *(arr + i)); } printf("\n"); } int main() { int a[5] = […]

使用带动态分配的C从CSV读取和保存值

在底部的编辑(我把它写成编辑而不是它自己的问题,因为它是如此相关): 我正在编写一个CSV阅读器,它应该将所有值保存为大型多维数组中的字符。 在之前的post中,我被警告过要么对我的缩减代码过于含糊,所以我要发布更多内容。 我想为它的长度道歉,因为我仍在试图估计这个网站上的长度是多少。 最终,该程序将成为我正在创建的用于执行数据分析的头文件的头条新闻。 我用于此程序的头文件是: #include #include #include 我遇到的问题是阅读器似乎在名为read_csv()的函数内工作。 我知道这是因为放在该函数中的printf()语句。 当我在main()中printf()多维,字符数组’buffer’时,数据无法正确显示。 在main()中,第一列将正确打印,但接下来的三列不会。 此外,我的目标是能够读取任何带有最多20个字符的单元格的MxN CSV文件。 使用malloc()创建通用代码是此任务的下一个目标。 我的main()结构如下: int main(){ FILE *f; char fname[20]; int i, j; printf(“enter name of csv file : “) ; scanf(“%s”,fname) ; f = fopen(fname, “r”); //find row/col int find_c_r[2]; int * pfrc = &find_c_r[0]; pfrc = find_col_row(f); printf(“Find_c_r[0] = %d […]

C中的稀疏数组! 怎么做到的? 我可以只分配数组的一部分吗?

第一个问题是:“我如何在C中做一个简单的稀疏数组(只有一个维度)?” {亲自动手,没有图书馆。} 最后一个:“我可以只分配数组的一部分吗?” 像*数组; 然后使用malloc为此分配一些mem; 所以,我们释放了我们不想要的索引。 我可以做吗? 非常感谢!

为什么我不能增加一个数组呢?

char a[] = “hello”; 我的理解是,行为类似于指向字符串的常量指针。 我知道写a++不行,但为什么呢?

使用多个排序条件对数组进行排序(QuickSort)

我试图找出(使用快速排序算法)如何通过2个标准对结构数组进行排序。 比如说我有一个结构: struct employee{ char gender[12]; char name[12]; int id; }; 说我的输入是: struct employee arr[3]= { {“male”,”Matt”,1234}, {“female”,”Jessica”,2345}, {“male”,”Josh”,1235} }; 我想先按性别对元素进行排序,然后按升序对ID进行排序。 一个例子是,所有的男性首先打印出他们的ID,然后是所有的女性。 我试图这样做而不使用qsort函数,但我没有丝毫想法如何检查。 这是我的排序function: void quicksort(struct employee *arr, int left, int right) { int pivot, l, r, temp; if(left < right) { p = left; l = left; r = right; while(l < r) { […]