11. februar 2003 - 17:53
Der er
9 kommentarer og 2 løsninger
PointerTilPointer
char **text; Kort og godt, jeg er ikke helt med det en double op stjerne... :/ Hvad betyder det helt præcist, og hvis der var en som ville lave et eksempel med en "**" ville jeg blive meget glad. Mvh Daniel
Annonceindlæg fra DE-CIX
11. februar 2003 - 17:56
#1
Det skal du bruge hvis du skal have et dynamisk array af dynamisk array. I C++: typedef char *charptr; char **s; s = new charptr[N]; for(int i = 0; i < N; i++) s[i] = new char[M];
11. februar 2003 - 17:58
#2
I C må det være: typedef char *charptr; char **s; int i; s = (charptr *)malloc(N*sizeof(charptr)); for(i = 0; i < N; i++) s[i] = (char *)malloc(M);
11. februar 2003 - 17:59
#3
Indtastet direkte uden at teste, så du må hellere lige checke min kode for tåbelige typos. :-)
11. februar 2003 - 18:00
#4
hvis jeg har forstået det her rigtigt mener du så at man kan udvidde sit d. array af d. array, hvis der er to ** foran, og ikke hvis der kun er en * ?
11. februar 2003 - 18:00
#5
Et andet - måske mere praktisk eksempel: #include <stdio.h> int main(int argc, char **argv) { for(int i=0;i<argc;i++) { printf("arg[%i] = [%s]\n", i, argv[i]); } return 0; } Eksempel: main.exe hello world -s -t 2 arg[0] = [main] arg[1] = [hello] arg[2] = [world] arg[3] = [-s] arg[4] = [-t] arg[5] = [2]
11. februar 2003 - 18:01
#6
s = (charptr *)malloc(N*sizeof(charptr)); Det er "N" hvad er det for noget ?
11. februar 2003 - 18:03
#7
jamen soreno, kunne man ikke også godt gøre det samme hvis jeg bare gjode sådan her... #include <stdio.h> int main(int argc, char *argv) { for(int i=0;i<argc;i++) { printf("arg[%i] = [%s]\n", i, argv[i]); } return 0; } Eksempel: main.exe hello world -s -t 2 arg[0] = [main] arg[1] = [hello] arg[2] = [world] arg[3] = [-s] arg[4] = [-t] arg[5] = [2]
11. februar 2003 - 18:04
#8
N er antal strenge du skal have. M er max-længden af strengene.
11. februar 2003 - 18:06
#9
Nej - for du skal se "char **argv" som et "array af char pointers" Altså når man skriver argv[0] så er det char array der er på plads 0 som tilgåes (i mit tilfælde "main").
11. februar 2003 - 18:06
#10
char *s; er en pointer til at array af char som f.eks. kan indeholde 'a' 'b' 'c' '\0' char **s; er en pointer til et array af pointers som hver kan pege på en streng som f.eks.: 'a' '\0' 'b' '\0' 'c' '\0'
11. februar 2003 - 18:08
#11
jeg fatter det... :) Tak
Kurser inden for grundlæggende programmering