O c pole

hlasů
3

Vím, že můžete prohlásit pole v C takto:

int nums[5] = {0,1,2,3,4};

Nicméně, můžete to udělat?

int nums[5];
// more code....
nums = { 0,2,5,1,2};

Jinými slovy, mohu inicializovat pole pomocí notaci konzoly kdykoli jindy než jen prohlášení? Díky za váš čas, Same

Položena 14/06/2009 v 01:57
zdroj uživatelem
V jiných jazycích...                            


6 odpovědí

hlasů
17

To není možné, C89 (to, co většina C kompilátory cílové). C99 je podporováno několik, a má složené konstantě

int nums[5];
memcpy(nums, (int[5]){1, 2, 3, 4, 5}, 5 * sizeof(int));

Můžete však nelze přiřadit k poli. Můžete kopírovat pouze do své paměti. Ty by potřebovat další pole, které kopírujete z oblasti C89

int nums[5]; 
int vals[] = { 1, 2, 3, 4, 5 };
memcpy(nums, vals, sizeof vals);

Všimněte si, že sizeofoperátor vrátí velikost svého operandu v bytech.

Odpovězeno 14/06/2009 v 02:03
zdroj uživatelem

hlasů
3

Standardní uvádí, že není možné přiřadit ke všem prvkům pole najednou pomocí výrazu přiřazení. Můžete to udělat jen to, že v průběhu prohlášení.

Ale můžete dosáhnout toho, co se snažíte dělat kopírováním za použití standardních funkcí.

Odpovězeno 14/06/2009 v 02:00
zdroj uživatelem

hlasů
1

Ani náhodou. Deklarace v příkladu ...

int nums[5] = {0,1,2,3,4};

... se nazývá Inicializátor . Inicializátory jsou součástí deklarace dat, která specifikuje počáteční hodnoty svých prvků pole.

Pokud vytvoříte pole , aniž by Inicializátor, máte smůlu. Musíte přiřadit hodnoty prvků pole staromódní způsob.

Užívat si,

Robert C. Cartaino

Odpovězeno 14/06/2009 v 02:03
zdroj uživatelem

hlasů
1

Jednoduchá odpověď: ne.

Inicializace C pole je možné pouze v době jeho vyhlášení.

Odpovězeno 14/06/2009 v 02:00
zdroj uživatelem

hlasů
1

To prostě není možné,

Odpovězeno 14/06/2009 v 01:59
zdroj uživatelem

hlasů
0

můžete prohlásit nums jako ukazatel.

int * nums;

pak můžete přiřadit pole v tomto ukazateli na pozdější dobu:

int tmp[5] = {0,1,2,3,4};

nums = tmp;
Odpovězeno 15/06/2009 v 16:04
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more