小编Ben*_*enj的帖子

这个C++代码是否可移植?(假设多维数组具有连续的内存布局)

首先,如果我犯了任何语法错误,对不起我的英语......

我的问题是,当我们有一个二维数组时,如果我是对的,从计算机和C/C++的角度来看,它只是一个长的一维数组,索引只是帮助编译器映射到具体的地址.

这段代码工作在Visual C++,但是我想知道,这个代码是否是便携式符合 标准(C++ 98),不会造成对其他架构和/或操作系统的惊喜:

int arr[][3] = { 1, 5, 3, 7, 5, 2, 7, 8, 9 };
const int ARR_NUM = sizeof(arr) / sizeof(int);

int* ptr = reinterpret_cast<int*>(arr);    // NOT: int(*)[][3] !!!
for (int i = 0; i < ARR_NUM; ++i) {
    cout << ptr[i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory arrays portability multidimensional-array

18
推荐指数
1
解决办法
806
查看次数

Objective-C中(Object*)和(id)的区别

请帮助我找出这两个代码片段之间的区别:(在片段中,Foo是一个派生自objc/Object.h中声明的Object的类)

// Snippet 1
Object* o = [Foo new];
[o free];

// Snippet 2
id o = [Foo new];
[o free];
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑
感谢您的有用答案!让我分享一下我发现的链接,也许它会帮助那些遇到像我一样的问题的人,并希望更好地理解它: id_vs_NSObject.

object objective-c

1
推荐指数
1
解决办法
2143
查看次数