1. kártya
#include <stdio.h>
int
main (void)
{
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", (*pp).alma); // pp mutatót használva kiíratjuk a p alma értékét (55)
(*pp).alma = 65; // pp mutató átal mutatott p alma értékének megváltoztatása 65-re
printf ("%d\n", pp->alma); // pp mutatót használva kiíratjuk a p alma értékét (65)
return 0;
}
/*
Lefordul
Kimenet:
55
65
*/
#include <stdio.h>
int
main (void)
{
struct aaa // struktúra melynek neve aaa és tartalmaz egy változót alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", (*pp).alma); // pp mutatót használva kiíratjuk a p alma értékét (55)
(*pp).alma = 65; // pp mutató átal mutatott p alma értékének megváltoztatása 65-re
printf ("%d\n", pp->alma); // pp mutatót használva kiíratjuk a p alma értékét (65)
return 0;
}
/*
Lefordul
Kimenet:
55
65
*/
2. kártya
#include <stdio.h>
int
main (void)
{
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", (*pp).alma); // pp mutatót használva kiíratjuk a p alma értékét (55)
(*pp.)alma = 65; // pp mutatót rosszul címezzük mivel a pont belül van a zárójelen és így nem értelmezzük az alma változóját sem
printf ("%d\n", pp->alma); // pp mutatót használva kiíratjuk a p alma értékét (65)
return 0;
}
/*
Nem fordul le!
*/
#include <stdio.h>
int
main (void)
{
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", (*pp).alma); // pp mutatót használva kiíratjuk a p értékét (55)
pp->alma= 65; // pp mutató átal mutatott p alma értékének megváltoztatása 65-re
printf ("%d\n", (*pp).alma); // pp mutatót használva kiíratjuk a p értékét (65)
return 0;
}
/*
Lefordul
Kimenet:
55
65
*/
3. kártya
#include <stdio.h>
int
main (void)
{
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", ++pp->alma); // pp által mutatott alma értékét menöveljül egyel majd kiíratjuk (56)
return 0;
}
/*
Lefordul
Kimenet:
56
*/
#include <stdio.h>
int
main (void)
{
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {55}, *pp; // p egy struktúra, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", ++(pp->alma));// pp által mutatott alma értékét menöveljül egyel majd kiíratjuk (56) ( zárójel nem változtat semmin mivel előbb úgyis a pp-> értélekődik ki )
return 0;
}
/*
Lefordul
Kimenet:
56
*/
4. kártya
#include <stdio.h>
int
main (void)
{
int korte = 54;
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {&korte}, *pp; // p egy struktúra mely megkapja értééként a körte memóriacímét, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", *pp->alma); // rossz mutató címzés, vagy *(pp).alam vagy pp->alma, gcc üzenete: invalid type argument of ‘unary *’ (have ‘int’)
return 0;
}
/*
NEM fordul le
*/
#include <stdio.h>
int
main (void)
{
int korte = 54;
struct // struktúra melynek egy változója van alma ami integer típusú
{
int alma;
} p = {&korte}, *pp; // p egy struktúra mely megkapja értééként a körte memóriacímét, pp egy struktúrára mutató mutató
pp = &p; // pp a p változóra mutató mutató
printf ("%d\n", (*pp->alma)++); // rossz mutató címzés, vagy *(pp).alam vagy pp->alma, gcc üzenete: invalid type argument of ‘unary *’ (have ‘int’)
printf ("%d\n", (*pp->alma)++);
return 0;
}
/*
NEM fordul le
*/
5. kártya
char *
masol (const char *mit)
{
char mibe[TOMB_MERET];
char *p = mibe;
char *vissza = mibe;
for (; *p++ = *mit++;);
// verem lokálisan foglalt terület visszadasa
return vissza;
}
/*
A függvény lokálisan foglal magának helyet a memóriában majd visszad erre a címre mutatót. Miután a lokális terület csak addig a függvényé míg fut a masol, lefutása után visszadott memóia területen akár egy másik program is dolgozhat és a mi általunk várt eredmény hibás lehet mivel másik program felülírta a tertalmat.
*/