相关疑难解决方法(0)

我可以将2D数组视为连续的1D数组吗?

请考虑以下代码:

int a[25][80];
a[0][1234] = 56;
int* p = &a[0][0];
p[1234] = 56;
Run Code Online (Sandbox Code Playgroud)

第二行是否调用未定义的行为?第四行怎么样?

c++ arrays pointers multidimensional-array undefined-behavior

33
推荐指数
3
解决办法
6087
查看次数

基于范围的多维数组

我的嵌入式系统有一个支持C++ 11的g ++版本,所以我一直在清理代码

for( uint16_t* p = array; p < (&array)[1]; ++p ) {
    *p = fill_value;
}
Run Code Online (Sandbox Code Playgroud)

for( uint16_t& r : array ) {
    r = fill_value;
}
Run Code Online (Sandbox Code Playgroud)

这是更具有可读性.

是否存在基于范围的for循环,它可以在所有元素上运行array2[m][n]

旧版本是

for( int16_t* p = array2[0]; p < (&array2)[1][0]; ++p ) {
    *p = fill_value;
}
Run Code Online (Sandbox Code Playgroud)

我不希望嵌套循环,除非保证编译器将它们展平.

(FWIW,编译器是TI Code Composer Studio 6.0.0附带的GNU 4.7.4 Linaro g ++ ARM交叉编译器)

c++ arrays foreach for-loop c++11

17
推荐指数
2
解决办法
8160
查看次数

在C/C++中,对于数组a,我刚学会了(void*)&a ==(void*)a.这是如何运作的?

所以,我总是知道在C/C++中传递的数组"对象"只包含数组中第一个对象的地址.

指向数组"对象"的指针和它包含的值如何相同?

有人可能会向我指出更多信息,也许是关于汇编中的所有信息.

c c++ arrays pointers

16
推荐指数
2
解决办法
834
查看次数