Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Używanie wskaźnika który jest polem struktury.

Ostatnio zmodyfikowano 2017-03-09 08:05
Autor Wiadomość
lukas090894
Temat założony przez niniejszego użytkownika
Używanie wskaźnika który jest polem struktury.
» 2017-03-08 21:27:43
Witam, jestem początkującym i mam pewien problem, szukałem dosyć dużo już na ten temat, ale nie znalazłem jeszcze odpowiedzi. Otóż problem jest taki: mam strukture:

typedef struct {

    char* pointer; 
 
} Foo;

która jest implementowana w taki sposób:

 Foo foo;
 char table[100];

później przypisuję w innej funkcji wskaźnik do zmiennej table:

 foo -> pointer = table;

i teraz nie wiem jak coś zapisać pod tym wskaźnikiem, próbowałem tak:

 foo -> * pointer = 'c';

ale kompilator wyrzuca błędy. Próbowałem też tak:

*foo.pointer = 'c';
 
ale w ten sposób nie mogę bo do funkcji podaję wskaźnik do instancji struktury.

Znajdzie się jakieś rozwiązanie tego? Pozdrawiam.
P-158715
Bielan
» 2017-03-08 21:41:36
C/C++
typedef struct {
   
    char * pointer;
   
} Foo;
Jest to zapis typowy dla C. W C++ nie trzeba używać słowa kluczowego
typedef
/


która jest implementowana w taki sposób:
To nie jest jej implementacja a instancja.


ale w ten sposób nie mogę bo do funkcji podaję wskaźnik do instancji struktury.
Próbowałeś odnieść się jak do tablicy?
P-158719
lukas090894
Temat założony przez niniejszego użytkownika
» 2017-03-08 21:54:22
Dziękuję za odpowiedź, a co do problemu: właśnie piszę to w C.

A z tym "odnieść się jak do tablicy" mógłbyś rozwinąć? Bo np. jeśli chcę zwiększyć adres w wskaźniku to wystarczy, że napiszę:

foo -> pointer++;

i to działa w debugerze, tylko nie mogę się dobrać do tego na co wskazuje wskaźnik.
P-158722
Bielan
» 2017-03-08 21:56:04
C/C++
char tab[ 100 ];
tab[ 10 ] = 'b';

foo->pointer = tab;
foo->pointer ??? = 'b';
P-158723
lukas090894
Temat założony przez niniejszego użytkownika
» 2017-03-08 22:03:38
A co rozumiesz pod "???"?
P-158727
Bielan
» 2017-03-08 22:05:30
To właśnie była zagadka dla Ciebie :P
P-158728
mateczek
» 2017-03-09 08:05:41
C/C++
#include <iostream>
struct Foo {
   
    char * pointer;
   
};

int main() {
    char tab[ 10 ];
    Foo fo;
    fo.pointer = tab;
    fo.pointer[ 0 ] = 'a';
    *( fo.pointer + 1 ) = 'b';
    fo.pointer[ 2 ] = 'c';
    *( fo.pointer + 3 ) = '\0';
    std::cout << fo.pointer << std::endl;
}
P-158743
« 1 »
  Strona 1 z 1