Tag: 数组

为什么有一个特殊的new和删除数组?

使用delete而不是delete[]什么问题? 在分配和释放数组的过程中是否有一些特殊的事情发生? 为什么它与malloc和free不同?

为什么指针指针是一个矩阵?

我知道在某些情况下,指向指针的指针被描述为矩阵。 有人可以解释一下,为什么这种方式有效? 哪个C属性允许它? 请不要发布指针这样的答案指针并不总是矩阵。 我知道,但我想问为什么它在某些情况下是一个矩阵。

初始化结构数组

这是我刚刚在其他人的问题中找到的初始化。 my_data data[]={ { .name = “Peter” }, { .name = “James” }, { .name = “John” }, { .name = “Mike” } }; 我之前从未见过这样的东西,也找不到解释.name可能是正确的。 我正在寻找的是这个过程如何逐步进行。 它看起来像是: 1) data; 2) *data; 3) (*data).name; 4) (*data).name=”Peter”; 还是我完全错了?

“int * a ”和int(* a)之间的区别是什么?

它们在C和C ++上的工作方式有所不同吗? Ps我的第一个问题,我是一个编程菜鸟所以请尽量保持asnwer基本和简单:) 先感谢您 !

查找char数组的长度

我有一些代码如下: int i=0; char a[7]={0x00,0xdc,0x01,0x04}; int len=0; len = sizeof(a); printf(“The Length is : %d”, len); 在这里,我想在c中找到数组a的长度? 如何才能做到这一点?

C / C ++如何在没有嵌套循环的情况下复制多维char数组?

我正在寻找一种将多维char数组复制到新目标的智能方法。 我想复制char数组,因为我想编辑内容而不更改源数组。 我可以构建嵌套循环来手动复制每个字符,但我希望有更好的方法。 更新: 我没有2. level维度的大小。 给定的只是长度(行)。 代码如下所示: char **tmp; char **realDest; int length = someFunctionThatFillsTmp(&tmp); //now I want to copy tmp to realDest 我正在寻找一种方法,将tmp的所有内存复制到空闲内存中,并将realDest指向它。 更新2: someFunctionThatFillsTmp()是Redis C lib credis.c中的函数credis_lrange()。 在lib tmp中创建了: rhnd->reply.multibulk.bulks = malloc(sizeof(char *)*CR_MULTIBULK_SIZE) 更新3: 我试过用这行代码使用memcpy: int cb = sizeof(char) * size * 8; //string inside 2. level has 8 chars memcpy(realDest,tmp,cb); cout […]

指向指针和指向数组的指针之间的区别?

鉴于数组的名称实际上是指向数组的第一个元素的指针,以下代码: #include int main(void) { int a[3] = {0, 1, 2}; int *p; p = a; printf(“%d\n”, p[1]); return 0; } 按预期打印1 。 现在,鉴于我可以创建一个指向指针的指针,我写了以下内容: #include int main(void) { int *p0; int **p1; int (*p2)[3]; int a[3] = {0, 1, 2}; p0 = a; p1 = &a; p2 = &a; printf(“p0[1] = %d\n(*p1)[1] = %d\n(*p2)[1] = […]

为什么初始化这样的二维数组会更糟​​?

for(int i = 0; i<100; i++) for(int j = 0; j<100; j++) array[j][i] = 0; // array[i][j] = 0; 我的教授说,第一种方式初始化二维数组要比第二种方式要昂贵得多。 有人可以解释引擎盖下面发生了什么事情吗? 或者,这两种初始化方法是否具有相同的性能?

C:从分隔的源字符串创建字符串数组

将分隔的字符串转换为C(而不是C ++)中的字符串数组的有效方法是什么? 例如,我可能有: char *input = “valgrind –leak-check=yes –track-origins=yes ./a.out” 源字符串将始终只有一个空格作为分隔符。 我想要一个malloc的malloc’ed字符串char *myarray[]数组,这样: myarray[0]==”valgrind” myarray[1]==”–leak-check=yes” … 编辑我必须假设inputString中有任意数量的标记,所以我不能将它限制为10或其他东西。 我尝试过strtok和我已经实现的链表的混乱解决方案,但是valgrind抱怨太多以至于我放弃了。 (如果你想知道,这是我正在尝试编写的基本Unix shell。)

在C中调整2D数组的大小

目前我正在尝试使用此代码片段在C中调整2D数组的大小 array = (int**) realloc(array, s * 2 * sizeof(int)); 其中s是行和列中数组的大小。 但是,当试图像这样访问数组的新区域时, array[3][0] = x; 我只得到一个段错误。 arrays的旧区域工作正常。 我该如何解决这个问题?