Kezdőoldal » Számítástechnika » Programozás » C - Mi történik ha egy tömbre...

C - Mi történik ha egy tömbre mutató pointner értékét eggyel növelem, majd kiíratom?

Figyelt kérdés

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;

}



2012. ápr. 1. 21:25
 1/7 iostream ***** válasza:

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.

2012. ápr. 1. 21:33
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:

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

2012. ápr. 1. 21:38
 3/7 iostream ***** válasza:

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}

2012. ápr. 1. 22:22
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:

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.

2012. ápr. 1. 23:11
 5/7 kukuri válasza:

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.

2012. ápr. 2. 10:13
Hasznos számodra ez a válasz?
 6/7 iostream ***** válasza:

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?

2012. ápr. 2. 10:47
Hasznos számodra ez a válasz?
 7/7 anonim ***** válasza:
Próbáld ki, hát ha lesz valami.
2012. jún. 3. 07:26
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!