Avatar billede Lasse Novice
23. januar 2003 - 17:17 Der er 19 kommentarer og
1 løsning

pointers

Hvordan deklarerer jeg og initialiserer jeg:
1) pointer til et array bestaaende af karakter stringe
2) reference til et array bestaaende af 10 integers
Avatar billede arne_v Ekspert
23. januar 2003 - 17:23 #1
char s[2][5] = { "1234", "4321" };
Avatar billede arne_v Ekspert
23. januar 2003 - 17:24 #2
int *p = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Avatar billede arne_v Ekspert
23. januar 2003 - 17:24 #3
Det er ihvertfald sådan jeg har læst spørgsmålet. Ret mig hvis jeg tager fejl.
Avatar billede Lasse Novice
23. januar 2003 - 17:30 #4
det er sikkert rigtig nok... jeg sidder og oever mig lidt paa C++, og laver derved nogle opgaver... men jeg kan ikke lige se hvordan jeg skulle klare disse to, og kan faktisk heller ikke rigtig se hvorfor at dette er svaret...

Jeg skal lige sidde og fundere lidt over det...
Avatar billede arne_v Ekspert
23. januar 2003 - 17:33 #5
Prøv og lav nogle små programmer der bruger konstruktionerne.

Man kan lære meget mere af 10 gange compile med syntax fejl og
5 gange runtime crash end ved at læse eksemple kode.
Avatar billede Lasse Novice
23. januar 2003 - 17:40 #6
den foerste kan jeg ikke greje...

den sidste kan jeg ikke rigtig vaere enig i...
Jeg er ude efter noge a la(bare med et array):
int i = 1;
int& ri = i;

Med
int* i = osv.

her kan jeg aendre pointeren(i) ved at den peger paa noget andet. Det kan man ikke paa samme maade med en reference (ri)
Avatar billede Lasse Novice
23. januar 2003 - 17:42 #7
arne_v>> det har du helt sikkert ret i...
Avatar billede Lasse Novice
23. januar 2003 - 17:45 #8
Jeg har forresten problemer med at kompilere:
int *p = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
Avatar billede arne_v Ekspert
23. januar 2003 - 17:50 #9
Jeg tror at følgende løser begge problemer:

  int ia[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  int *ip = ia;
Avatar billede arne_v Ekspert
23. januar 2003 - 17:55 #10
A small example:

#include <iostream>

int main(int argc, char *argv[])
{
  int ia[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  int *ip = ia;
  for(int j=0;j<10;j++) {
      cout << ia[j] << endl;
  }
  while(ip<=(&ia[9])) {
      cout << *ip << endl;
      ip++;
  }
  return 0;
}
Avatar billede Slettet bruger
23. januar 2003 - 17:58 #11
arne_v:
int *ip = ia;

tilsvarer det så: int *ip = &ia[0] ??

(er på samme niveau som gooky :)
Avatar billede arne_v Ekspert
23. januar 2003 - 18:00 #12
Eller med begge stumper:

#include <iostream>

int main(int argc, char *argv[])
{
  int ia[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  for(int j=0;j<10;j++) {
      cout << ia[j] << endl;
  }
  int *ip = ia;
  while(ip<=(&ia[9])) {
      cout << *ip << endl;
      ip++;
  }
  char sa[2][5] = { "1234", "4321" };
  for(int j=0;j<2;j++) {
      cout << sa[j] << endl;
  }
  char *sp = sa[0];
  while(sp<=sa[1]) {
      cout << sp << endl;
      sp += 5;
  }
  return 0;
}
Avatar billede arne_v Ekspert
23. januar 2003 - 18:01 #13
Ja.

int *ip = ia;

og

int *ip = &ia[0];

gør helt det samme.
Avatar billede Lasse Novice
23. januar 2003 - 18:01 #14
mercur8>> som jeg har forstaaet det, saa er det ikke saadanne, men:
ip = &ia[0];
Avatar billede arne_v Ekspert
23. januar 2003 - 18:05 #15
Det er faktisk også rigtigt, fordi

int *ip
ip = ia;

og

int *ip;
ip = &ia[0];

er det samme.

Det er bare spørgsmålet om man putter assignment i samme linie som erklæringen.
Avatar billede Lasse Novice
23. januar 2003 - 18:08 #16
ahh, ja, nu virker det som om det daemper en smule... det med pointer delen...

alligevel er jeg ikke enig mht. referencen:

en bedre(kun for eksemplets skyld, sikkert ikke noget man kan bruge i hverdagen)

int* const cpI = ia;
Avatar billede arne_v Ekspert
23. januar 2003 - 18:16 #17
Man kan godt bruge:
  const int *pi = ia;

Og det er vel endda den rigtige måde at gøre det på.

Grunden til at det nok ikke bruges så meget er:
1)  const er en C++ ting og finds ikke i C
2)  det er ikke altid lige til at huske om syntaxen betyder
    at ip er konstant eller at det ip peger på er konstant (og
    for en god ordens skyld: det er det sidste)

Men ja det er faktisk pæn C++ er erklære den sådan.
Avatar billede Lasse Novice
23. januar 2003 - 18:23 #18
const int *pi = ia;
og int* const pi = ia;

er vist ikke det samme(laeser lige i min bog)

den foerste er konstante integers, den sidste er konstant pointer.
Avatar billede Lasse Novice
23. januar 2003 - 18:24 #19
ok.. ok .... jeg tror jeg afslutter spg... takker arne_v
Avatar billede arne_v Ekspert
23. januar 2003 - 18:32 #20
Ja.

int* const ip = ia;

er en konstant pointer.

Men det giver meget meget meget sjældent mening at bruge den konstruktion.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester