1
13
|
2
7
编译器计算出编译时的大小,并硬编码目标代码中的大小。 |
3
6
有一个 interesting article on Dennis Ritchie's homepage on the history of C 关于数组,数组索引,等等有很多要说的。 这可能不会直接回答您的问题,但它可能会加深您对C数组的理解。。。这是一本有趣的读物。 |
4
5
对于数组,编译器知道:(a)数组开头的地址,以及(b)数组包含的元素类型(int、float、double等),以及每个元素的长度。
|
5
3
|
6
2
编译器在编译时知道数组中每个元素的大小。例如:
|
7
1
它是 ! 编译器知道数组元素的大小,并使用它来计算正确的地址。 |
8
0
不,它没有。它只是在地址处获取/设置元素
|
9
0
这个
|
10
0
是的,你是对的,这是一个更低级的问题,甚至连汇编程序都有
它看起来有点复杂,但生成的代码很简单。因为我知道
还有一件事,我提到了低级语言,所以需要提到高级语言。使用它们你可以重载操作符,让它做任何你想做的事情。 |
11
-2
据我所知,如果索引超出范围,C不会给出编译时错误。 即使超出了界限,指针也只会为您提供下一个相邻的内存位置。C唯一关心的是增加指针的字节数。 如果它是一个整数数组,那么指针对于索引中的每一个增量将前进2个字节,对于char它将增加1个字节。 您总是可以访问超出界限的位置,但这是垃圾数据,作为程序员,您必须确保您访问的是正确的数据。 我想这就是自由的代价:) |
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |