gpt4 book ai didi

c - "Arrays = Pointers"*令人震惊*。许多年后 : "Actually, they don' t"*mind blown again*

转载 作者:行者123 更新时间:2023-12-02 06:18:52 25 4
gpt4 key购买 nike

<分区>

上下文:

在发现 a[i] 只是 *(a + i) 的语法糖之前,我断断续续地用 C 编程了大约 2 年,因此是等价的到 *(i + a)i[a]。我的现实被颠倒了很多“啊哈!”接下来几天的学习和阅读(“所以这就是数组总是通过引用传递的原因!”等)的启示时刻。从那时起,我就将指针/数组等价性内化了,并将其牢记在心,所以想象一下,当我偶然发现这个叫做“数组衰减”的东西时,是多么的震惊。这是典型的例子:

代码:

#include <stdio.h>

int Length(int*);

int main () {
int arr[100];
printf("Length of array: %d\n",(int)(sizeof(arr)/sizeof(arr[0])));
printf("Length of array: %d\n",Length(arr));
return 0;
}

int Length(int arr[]) {
return sizeof(arr)/sizeof(arr[0]);
}

结果:

Length of array: 100
Length of array: 2

问题:

原来C毕竟对数组有一定的认识!在声明数组的 main 中,程序能够正确报告它的大小。现在我想知道有多少数组语法只是指针操作的语法糖(以前我假设:全部)。 C实际上确实有数组,它们的局限性是什么?这个例子表明,只要你在同一个函数中就可以获得它们的长度,你还能做什么其他很酷的事情?在这个腐烂的东西开始之前你能走多远?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com