2016-02-04 3 views
2

При попытке присвоить символ string_buffer в другой структуре он говоритИспользование необъявленного идентификатора при использовании struct?

использование ошибок незаявленного идентификатора

Я знаю, что означает, что я должен объявить буфер строки в текущем struct но есть без этого.

struct ABC{ 
char string_buffer[64]; 
}; 


struct ABC *DEF(char *name){ 
name = string_buffer; 
}; 
+0

'string_buffer' является' char [64] '(массив из 64' char ') внутри' struct'. Предположим, что у вас есть несколько «struct» с именем этого члена (это разрешено). Итак, как компилятор знает, что вы имеете в виду? – Olaf

ответ

4

string_buffer не является обычной переменной. Он является переменной-членом переменной типа struct ABC. Вы должны иметь переменную типа struct ABC, а затем, вам нужно получить к нему доступ usig оператора доступа к члену (. или ->), как

struct ABC sample = {0}; 

.... sample.name //valid access 

Кроме того, FWIW, основываясь на примере кода, позвольте мне сказать вам, , string_buffer - массив. Вы не можете назначить массив так, как вы показали в фрагменте образца. Если вы хотите скопировать содержимое, вам необходимо использовать strcpy().

+0

И он попытается присвоить массив ... ??? возможно, еще один массив! –

+0

@iharob Вот почему я не использовал назначение, я просто пытался показать действительный доступ. :) –

+0

@iharob Обновленный ответ, чтобы уточнить. :) –

Смежные вопросы