HTML

Programozó Páternoszter

Ez a Programozó Páternoszter (PP) blogja, a programozásról szól. Aktualitása, hogy a Debreceni Egyetem Informatikai Kara Magasszintű programozási nyelvek 1-2, C++ esattanulmányok, Java esettanulmányok című kurzusainak blogja is egyben.

A vadászat

A Debreceni Egyetem Programozói Évkönyve: az UDPROG projekt. A szakmai fórumunk a Facebook-en. Az új előadások a prezin.
A régi előadások:
Prog1:
1. C bevezetés
2. C tárgyalás
3. C befejezés
4. C a gyakorlatban
5. C++ bevezetés
6. C++ tárgyalás
7. C++ befejezés
8. C++ a gyakorlatban
9. Java platform bevezetés
10. Kvantuminformatikai alg. bev.
Prog2:
1. Java bevezetés
2. Java tárgyalás
3. Java befejezés
4. Java a gyakorlatban
5. Software Engineering bev.
6. Java EE bevezetés
7. AspectJ bevezetés
8. BPMN-BPEL SOA programozás
9. C++ haladó
10. Tensorflow

Kövess engem!

Friss topikok

Linkblog

Mikorra oszlik el a nyelvtől való félelem?

2011.02.21. 20:35 nb

Nyilván van, akiben nincs is. Akiben igen, annak tapasztalatom szerint a 2. előadásbeli alábbi jellegű fólia témájának megértése után: amikor leesik, hogy a mutató valójában nem egy bonyolult konstrukció.

10 komment

Címkék: mutató tömb char** malloc címaritmetika

A bejegyzés trackback címe:

https://progpater.blog.hu/api/trackback/id/tr152677987

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

nb · http://fersml.blog.hu 2011.02.22. 07:55:54

Oppps, este rajzoltam, ma reggel nézem, rám vigyorog belőle egy hiba :(

Aki először jelzi egy kommentben, ott egy kisb.

akikiss 2011.02.22. 12:14:53

Nos. A jobb felső dinamikus tömb
&dinamikus_tomb[1]
*(dinamikus_tomb+1)
alsó sorába az elején két * kell

pi_zoli 2011.02.22. 12:15:19

&dinamikus_tomb[1]
dinamikus_tomb+1 a helyes &dinamikus_tomb[1] *(dinamikus_tomb+1) helyett mert a dinamikus_tomb erteket megnovelve a dinamikus_tomb[] eslo elemet kapjuk /*gondolom*/

nb · http://fersml.blog.hu 2011.02.22. 16:11:54

@akikiss: kapisgálsz valamit, de nem erre gondoltam, viszont, ha erre válaszolsz (dedikáltan Te) akkor megvan a piros pont:

dinamikus_tomb[0][1] = 'a';
dinamikus_tomb[1][0] = 'b';
dinamikus_tomb[1][1] = 'c';
dinamikus_tomb[2][0] = 'd';
dinamikus_tomb[2][1] = 'e';
dinamikus_tomb[2][2] = 'f';
printf ("%c\n", **(dinamikus_tomb + 1));

mit ír ki?

nb · http://fersml.blog.hu 2011.02.22. 16:13:00

A megoldáa annyi volt, hogy egy &-t kellett törölni:

dinamikus_tomb[1]
*(dinamikus_tomb+1)

nb · http://fersml.blog.hu 2011.02.22. 16:44:08

@nb: már ez a jó kép van kint mostantól.

akikiss 2011.02.22. 17:00:20

@nb: Megérzésem szerint egy 'b' betűt ír ki a program.

nb · http://fersml.blog.hu 2011.02.22. 17:04:23

@akikiss: egy transzcendentális meditáció kurzuson ez meg is tenné :) de most bizonyosság kell! De csak azzal tudlak bíztatni, mint Obivan Luke-ot: bízz a megérzéseidben!

akikiss 2011.02.22. 18:39:57

@nb: Biztos vagyok benne, lefuttattam!!

kód
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
char dinamikus_tomb[2][2];
dinamikus_tomb[0][1] = 'a';
dinamikus_tomb[1][0] = 'b';
dinamikus_tomb[1][1] = 'c';
dinamikus_tomb[2][0] = 'd';
dinamikus_tomb[2][1] = 'e';
dinamikus_tomb[2][2] = 'f';
printf ("%c\n", **(dinamikus_tomb + 1));
return (EXIT_SUCCESS);
}

nb · http://fersml.blog.hu 2011.02.22. 18:51:37

@akikiss: OK., ott a pont (jöhet priviben a név/labor)

Bár (szigoróan a példát követve) Te egy fix. két dimenziós tömbbe próbáltad ki, viszont esetünkben a sorok különböző méretűek voltak, valami ilyen kód jobban fekszik ide:

#include <stdio.h>
#include <stdlib.h>

int
main (void)
{
int sorok_szama = 3;
int oszlopok_szama;
char **dinamikus_tomb;

if ((dinamikus_tomb = (char **)
malloc (sorok_szama * sizeof (char *))) == NULL)
{
perror ("memoria");
exit (EXIT_FAILURE);
}

for (int i = 0; i < sorok_szama; ++i)
{
oszlopok_szama = i + 1;

if ((dinamikus_tomb[i] = (char *)
malloc (oszlopok_szama * sizeof (char))) == NULL)
{
perror ("memoria");
exit (EXIT_FAILURE);
}

}

dinamikus_tomb[1][1] = 'x';
printf ("%c\n", *(*(dinamikus_tomb + 1) + 1));
printf ("%c\n", *(*(&dinamikus_tomb[1]) + 1));

dinamikus_tomb[0][1] = 'a';
dinamikus_tomb[1][0] = 'b';
dinamikus_tomb[1][1] = 'c';
dinamikus_tomb[2][0] = 'd';
dinamikus_tomb[2][1] = 'e';
dinamikus_tomb[2][2] = 'f';
printf ("%c\n", **(dinamikus_tomb + 1));

*(*(dinamikus_tomb + 1) + 1) = 'y';
printf ("%c\n", dinamikus_tomb[1][1]);
printf ("%c\n", *(dinamikus_tomb[1] + 1));
printf ("%c\n", *(*(dinamikus_tomb + 1) + 1));

for (int i = 0; i < sorok_szama; ++i)
free (dinamikus_tomb[i]);

free (dinamikus_tomb);

return 0;
}
süti beállítások módosítása