C - Mi történik ha egy tömbre mutató pointner értékét eggyel növelem, majd kiíratom?
Mi történik ha egy tömbre mutató pointner értékét eggyel növelem,majd kiíratom .Ezután egy új értéket adok a tömbnek.
Szerintem:
Ha eggyel növelem a mutatót eggyel tovább ugrik a memóriában ahol el van mentve a pointner.
Ha új értéket adok utána - nos nem tudom ,uj értéket adtam a pointernek,de nem változott meg az értéke teljesen - maradt a régi értékéből és az újból is ? de viszont a memoria cime nem változott a pointernak
#include <stdio.h>
#include <conio.h>
int main()
{
char str1[ ] = "abc";
char *p;
p = str1;
printf("1. ertek{pointnera}: %p\n",p);
printf("1. ertek{pointnera}: %s\n\n",p);
p++;
printf("2. ertek{pointnera}: %p\n\n",p);
*p='df';
printf("uj erteke : %s\n",p);
printf("uj erteke: %p\n\n",p);
return 0;
}
Elég értelmetlen a kérdés. A pointert ha növeled eggyel akkor egy elemmel arrébb ugrik egy tömbben. Ha tömbre mutat, egyébként undefined behavior (ha dereferálod).
Itt az elején az 'a' betűre mutat, aztán növelés után a 'b' betűre.
Ezzel en is szenvedtem...
szoval ha egy drb pointnerrel nem tudok ramutatni egy tombre? ez csak az elso elemere mutat a tombnek? abc bol az A ra? de akkor miert irja ki az ABC t?
Ha erteket adok neki miert nem valtozik meg az egesz tomb erteke?
szamoknal mukodik./nagzjabol leirom mire gondolok/ ha pl. a=5 *p=a p=3 a=3
Számoknál sem működik.
int szamok[] = {1, 2, 3};
int* ptr = szamok;
*ptr == 1;
++ptr;
*ptr == 2;
*ptr = 42;
//szamok: {1, 42, 3}
ez a feldat:
Megprobalom leforditani a feladatot:
Tudsz mar dolgozni pointerekkel?. Tudtok de, de mi van a pointerben valojaban elmentve? Termeszetessen, realis helye,címe. Deklarájon es rendeljen hozza egy tömbe betuket, tovabba mutatot a tombre es irassa ki a kepernyore igazi cimet amire mutat(napr. printf("%p",pointer) ). azutan valtoztasa meg az erteket(eggyel novelje). Irjon az ertekebe erre a cimre. Mi tortent? Vegul valtoztassa meg erteket a cimnek valami egessszen masra, veretlen szeruen . Mi tortent? Magyarazza el.
Mostanában már nem foglalkoztam ilyennel.
A következő tömb megadásnál
char str1[ ] = "abc";
egy 1 elemű tömböd van aminek az értéke "abc". Tehát nem tudod tovább léptetni. Az egyik válaszban leírtak alapján char str1[]={a,b,c}; formában kellene feltölteni a tömb tartalmát.
Neee, ezt hagyd abba. A "abc" karakterlánc-literál ekvivalens az alábbi konstans tömbbel: {'a', 'b', 'c', '\0'}
Tehát egy karakterekből álló tömb.
Kérdező: mi lenne, ha nem próbálnád lefordítani a feladatot? Mert ez így érthetetlen. Milyen nyelven van eredetileg?
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!