- A processzor tokozásán szállítja a memóriát a GMKtec legfrissebb mini PC-je
- Fél évszázados Apple jubileumot ünnepel a 8BitDo ízig-vérig fém billentyűzete
- Nem csak nagy, de gyors is az LG önerőből AI felskálázást biztosító monitora
- Kötelező frissítésnek számít a Microsoft legújabb csomagja a Windows 11-hez
- Szó szerint kifüstöli az AI-t a Közel-Keleten Irán
- Kell(ene) a hűtés a MacBook Neónak
- ThinkPad (NEM IdeaPad)
- Szünetmentes tápegységek (UPS)
- Kormányok / autós szimulátorok topikja
- Vezetékes FEJhallgatók
- SONY LCD és LED TV-k
- Milyen egeret válasszak?
- Egérpad topik
- Milyen monitort vegyek?
- Nem csak nagy, de gyors is az LG önerőből AI felskálázást biztosító monitora
Új hozzászólás Aktív témák
-
dobragab
addikt
válasz
maestro87
#5683
üzenetére
"Összetett literális".
Alaptípusokra, mint amilyen az
int, azunsigned long, adouble, tudsz a programkódba beágyazott konstansokat írni. Pl:0,25UL,0x0badc0de,4.6f,0.001. Speciális literal még a string literal, amit így ismersz:"Hello world!\n".Struktúrákra, union-okra, tömbökre C89-ben ilyet csak inicializálásnál tudsz:
struct Pont p = {5, 12};
int arr[] = {1, 2, 3, 5, 8, 13, 21};
p = {12; -5}; // <- ERROR
p.x = 12;
p.y = -5; // <- macerásC99 behoz ezzel kapcsolatban két feature-t, a compound literal és a designated initializer.
Compound literal
Arra való, hogy a programkódban ne csak ilyen alaptípusokat, hanem összetett típusokat is meg lehessen adni egyetlen kifejezésben. Ehhez ugyanaz a szintaxis, mint az inicializálásnál, konyhanyelven annyi különbséggel, hogy a kapcsos zárójel tartalmát az adott típusra kell "cast-olni".
p = (struct Pont){12; -5};
struct Pont Pont_tukroz(struct Pont p)
{
return (struct Pont){p.y, -p.x};
}
struct Pont q = Pont_tukroz((struct Pont){10, 13});printf("%p\n", (int[]){1});
double osszeg = double_osszeg((double[]){1.0, 2.718, M_PI}, 3);Ezek a "változók" temporális objektumok, nincs nevük, nem képezheted a címét, mint ahogy ez is értelmetlen:
printf("%p", &1);Élettartamuk a blokk végéig tart (bezáró
}), nem úgy, mint C++-ban, ahol a pontosvesszőig (jó, nem pont így van a szabványban, de megközelítőleg pontos).Designated initializer
C-ben a struktúrák adattagjait közvetlenül érjük el, szinte mindig név szerint.
void Pont_kiir(struct Pont p)
{
printf("(%d, %d)", p.x, p.y);
}Kivéve: inicializálásnál.
struct Pont p = {5, 12};Ez egyértelműnek tűnik, az
xkoordináta 5 lesz, azypedig 12. De mi történik, ha valami bunkó így definiálta astruct Pont-ot?struct Pont
{
int y;
int x;
}Ilyenkor minden működik tovább, kivéve az inicializálást, akkor pont fordítva történnek a dolgok, mint ahogy az ember elképzelte. Ezért vezették be, hogy a struktúrákat inicializálni is lehessen név szerint:
struct Pont p = {.x = 5, .y = 12};Természetesen compound literal-lal együtt is használható.
p = {.x = 5, .y = 12};És nem csak struktúrákra, tömbökre is.
int arr[] = {[0] = 8, [1] = 13, [2] = 21};Sőt, vegyesen is.
haromszog_rajzol((struct Pont[])
{
[0] = {.x = 12, .y = 5},
[1] = {.x = -12, .y = 5},
[2] = {.x = 0, .y = 0}
});Jó eséllyel ezeket a te fordítód is támogatja, ha GCC vagy Clang, csak -std=c99 kell neki. MSVC a C99 cuccokat a 2015-ös verzió óta zömmel tudja...
EQMontoya: bocsi a magyar változónevek miatt

Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Xiaomi 17 Ultra - jó az optikája
- Kell(ene) a hűtés a MacBook Neónak
- Android alkalmazások - szoftver kibeszélő topik
- Battlefield 6
- Milyen légkondit a lakásba?
- ThinkPad (NEM IdeaPad)
- Szünetmentes tápegységek (UPS)
- 50 év után kilőtt négy űrhajós a Holdra
- Xiaomi 15T Pro - a téma nincs lezárva
- Sweet.tv - internetes TV
- További aktív témák...
- Szép! HP EliteBook 855 G7 Fémházas Strapabíró Laptop 15,6" -65% AMD Ryzen 3 PRO 4450U 16/256 FHD
- Logitech G923 + állvány (PS5/PS4/PC) újszerű
- Bomba ár! HP Elitebook 850 G8 - i5-11GEN I 16GB I 256GB SSD I 15,6" FULLHD I Cam I W11 I Gari!
- Bomba ár! Lenovo ThinkPad L390 - i7-8GEN I 16GB I 256SSD I 13,3" FULL HD I HDMI I Cam I W11 I Gari!
- Bomba ár! Lenovo ThinkPad X260 - i5-6G I 8GB I 256SSD I 12,5" HD I HDMI I CAM I W11 I Gari!
- HP EliteBook 830 G5 13,3" i7 8650u, 16GB RAM, SSD, jó akku, számla, 6 hó gar
- Sapphire Nitro+ RX 5700 XT 8GB
- Használt számítógépek/merevlemezek számlával, garanciával! Ingyen Foxpost/PostaPont!
- iPhone 14 Pro Max 256GB 100% (1év Garancia)- ÚJ EREDETI AKKUMULÁTOR - AKCIÓ
- AKCIÓ! ASUS B660M i5 12400F 32GB DDR4 500GB SSD RTX 5060Ti 16GB Lian LI LANCOOL 207 Inwin 650W
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


