2012-04-04 2 views
0

У меня есть структура C с примерно 17 членами struct settings currentProfile и хотел бы инициализировать все ее члены до нуля. (Я пытался это как с убером-правильный синтаксисом структуры и ЬурейиМ синтаксисом)Инициализация C struct ожидаемое выражение

Для установки всех пользователей к нулю Я использую currentProfile = {0}

на этой линии компилятор придает ERRO Expected an expression

Am I правильная инициализация? Thanks

+2

Пожалуйста показать некоторые, что экспонаты код Ошибка. –

+0

Эта концепция четко упоминается в книге K n R –

+0

@MichaelFoukarakis '' settings currentProfile, newProfile void initProfile (void) { currentProfile = {0}; } '' – Toby

ответ

6

Вы выполняете (недействительное) назначение, а не инициализацию.

Чтобы инициализировать объект структуры со всеми членами установлен 0:

struct settings currentProfile = {0}; 

Чтобы установить все элементы объекта STRUCT в 0 после ее объявления:

memset(&currentProfile, 0, sizeof currentProfile); 
+1

Обратите внимание, что динамически выделенные указательные элементы, возможно, должны быть 'free'd до операции' memset', чтобы избежать утечек памяти , – moooeeeep

+0

@moooeeeep, не проблема при инициализации! – Shahbaz

+0

@Shahbaz, но _may_ будет проблемой при назначении позже. – moooeeeep

1

memset (pointer_to_struct, 0, size_of_struct);

#include <string.h> 

struct settings currentProfile; 
memset(&currentProfile, 0, sizeof(struct settings)); 
+0

Я сделал то же самое, но я получаю сообщение об ошибке, найду код ниже. #include #include using namespace std; struct abc {int x; int y;}; struct abc xyz; int main() { memset (& xyz, 1, sizeof (struct xyz)); cout << xyz.x; // предоставление мусора return 0;} –

+0

Вы сказали: «У меня есть C struct ...». Ваш код - C++. – jacekmigacz

+0

Найти код C#include #include // using namespace std; struct abc {int x; int y;}; struct abc xyz; int main() { memset (& xyz, 1, sizeof (struct abc)); // memset (& xyz, 1, sizeof (struct xyz)); // Дает ошибку недопустимое применение 'sizeof' к неполному типу 'struct xyz' printf ("xyz.x =% d", xyz.x); // предоставление мусора return 0;} –

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