Из комментария в исходном сообщении вы имеете в виду, можете ли вы сказать, было ли присвоено значение переменной. Мы называем это инициализация . Если значение не было сохранено в переменной, оно неинициализировано , и это плохо, потому что вы никогда не знаете, что там может быть, и нет, вы не можете проверить, было ли оно инициализировано, поэтому инициализируйте его, когда Вы заявляете об этом.
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;
}
}