Если я хочу, чтобы вернуть пустой char*
, я могу это сделатьВозвращает пустой массив полукокса *
char* Fun1(void) {
return "";
}
Теперь представьте себе такую же проблему с char**
, я хочу, чтобы вернуть пустой массив char*
.
Есть ли более короткий способ написать это без использования временной переменной?
char** Fun2(void) {
char* temp[1] = {""};
return temp;
// return {""}; // syntax error !
}
Цель состоит в том, чтобы скрыть тот факт, что строка может представлять собой NULL
указатель.
Ваш 'Func2' приведет к непредсказуемому поведению, как вы вернуть указатель на локальная переменная, которая недействительна после возвращения функций. –
Помимо того факта, что вы возвращаете указатель на локальную переменную, которая недопустима, массив, который вы пытаетесь вернуть, фактически не пуст (он содержит пустую строку). Я не понимаю, что вы здесь делаете. – interjay
Вы говорите: «Я хочу вернуть пустой массив», но ваш код на самом деле возвращает (не указатель на) непустой массив с 1 элементом, который является пустой строкой. Я думаю, сначала вам нужно решить, что для вас означает «пустой». Как только вы это сделаете, вы можете внести изменения в другое место в коде, которые делают этот вопрос неуместным. –