C-ben visszalehet valahogy térni egy 2 dimenziós tömbbel?
Egy függvényből valahogy visszalehet térni egy tömbbel valahogy így?
char *leker(){
char tomb[3][32]={"teszt0", "teszt1", "teszt2"};
return tomb;
}
char *leker(){
char tomb[3][32]={"teszt0", "teszt1", "teszt2"};
return tomb;
}
Ez több sebből vérzik. Egyrészt az indirekció nem helyes, nem fordul így le.
DE a fontosabb: egy függvényben létrejött/létrehozott dolog megszűnik a visszatérés után!!!
Szóval neked dinamikusan kell foglalnod, és utána annak a pointerével visszatérned.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char TStrings[3][32];
TStrings * leker() {
TStrings tomb = {"teszt0", "teszt1", "teszt2"};
TStrings * tomb_p;
// Allocate memory to return.
// The memory pointed to will be on the heap,
// so make sure to free it with the free() function
// when you are done with it.
tomb_p = malloc(sizeof(TStrings));
strcpy((*tomb_p)[0], tomb[0]);
strcpy((*tomb_p)[1], tomb[1]);
strcpy((*tomb_p)[2], tomb[2]);
return tomb_p;
}
int main()
{
TStrings * tomb_p;
tomb_p = leker();
printf("%s\n", (*tomb_p)[0]);
printf("%s\n", (*tomb_p)[1]);
printf("%s\n", (*tomb_p)[2]);
free(tomb_p); // Free memory.
return 0;
}
// Itt van egy másik megoldás is.
#include <stdio.h>
#include <strings.h>
typedef struct {char items[3][32];} TStrings;
TStrings leker() {
TStrings tomb = {"teszt0", "teszt1", "teszt2"};
return tomb;
}
int main()
{
TStrings tomb;
tomb = leker();
printf("%s\n", tomb.items[0]);
printf("%s\n", tomb.items[1]);
printf("%s\n", tomb.items[2]);
return 0;
}
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!