如果我有两个像这样的数组:
short** x;
short** y = functionThatReturnsAnArray();
在这种情况下 sizeof(x) == sizeof(y)
。
两者都是 4,我认为这是因为外部数组只是一个指针数组,因此实际上没有分配任何 RAM。
我怎么知道 x 没有被赋值?
谢谢,
乔
最佳答案
从您原始帖子中的评论来看,您的意思是您是否可以判断是否已将值分配给变量。我们称之为初始化。当一个值还没有被存储到一个变量时,它是未初始化的,这很糟糕,因为你永远不知道那里可能有什么,不,你无法检查它是否已经被初始化,所以初始化它当你声明它时。
sizeof(x) == sizeof(y)
因为它们被声明为同一类型 (short**
);它们的内容无关紧要(sizeof
实际上是由编译器决定的,所以它通常不知道里面有什么)。
如果你想知道每个指向的内存区域是否为零,你需要手动完成(并且你需要知道每个数组有多长):
int x_empty = 1;
for(int i = 0; i < x_length_d1 && x_empty; i++) {
if(x[i] == NULL) {
// Handle a missing row however you want.
}
for(int j = 0; j < x_length_d2 && x_empty; j++) {
if(x[i][j] != 0) x_empty = 0;
}
}
关于c - 如何判断多维数组是否未分配给?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8248714/