2009-10-31 2 views
0

Пусть struct_name это имя структуры я определил, и массив является членом в структуры определяется как char array[o]Работа с C в структурах

что делает следующая строка производить? (*struct_name).array Адрес местонахождения?

+0

массив [o] - это своего рода хак ... – user133466

+0

возможно, но это ужасно полезно :) – 246tNt

+0

Это действительно массив [o] или вы имели в виду массив [0]? (т. е. нуль, а не идентификатор «letter-oh»). Если последнее «o» - действительно плохое имя для идентификатора. Кроме того, вместо описания кода «Предположим ...», почему бы просто не опубликовать код напрямую, поэтому нам не нужно «предполагать» что-нибудь? – Clifford

ответ

1

да (при условии, struct_name является указателем на вашей структуры, в противном случае Разыменование просто не имеет смысла)

Кстати, почему бы не сделать struct_name-> массив?

1

Если вы определили struct_name как экземпляр вашей структуры, как это:

struct your_struct struct_name; 

Вы хотите struct_name.array, который, да, производит обращение к array члена. Если вы определили struct_name как экземпляр вашей структуры, как это:

struct your_struct *struct_name; 
struct_name = malloc(sizeof(struct your_struct)); 

Вы хотите struct_name->array, который также возвращает адрес array.

Если вы определили struct_name как имя самой структуры, как это:

typedef struct _struct_name { 
    char array[5]; 
} struct_name; 

Тогда вы не знаете, что вы хотите.

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