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

Spis pojęć

Ostatnio zmodyfikowano 2009-01-02 15:52
Autor Wiadomość
manfred
» 2009-01-02 15:52:27
Wydaje mi się, że w Twoim zrozumieniu wskaźników jest pewna niepoprawność. Otóż ten zapis:

wskaznik -= 14

wcale nie zmienia wartości zmiennej na którą wskazuje owy wskaźnik. Zmienia on natomiast wartość wskaznika i przesuwa go o 14 bitów, o ile się nie mylę.
Nie wiesz - nie wypowiadaj się. Ten zapis zmniejsza wartość wskaźnika o 14*rozmiar wskazywanego typu (nie, nie sizeof(wskazywany typ)... sizeof zwraca rozmiar typu w wielokrotnościach rozmiaru typu char), w przypadku double jest to (na x86) 112 BAJTÓW. Sprawdź ten kod:
C/C++
#include <cstdio>

using namespace std;

int main( int argc, char * argv[] )
{
    double foo[ 15 ];
    foo[ 0 ] = 1.2;
    foo[ 14 ] = 2.4;
    double * bar = & foo[ 14 ]; //foo[14] to cukier składniowy na (*(foo + 14))
    printf( "%lf\n", * bar );
    bar -= 14;
    printf( "%lf\n", * bar );
    printf( "%s%d", "Rozmiar tablicy w wielokrotnosciach char (a char to prawdopodobnie 1 bajt): ", sizeof( foo ) );
    return 0;
}
P-18682
1 2 « 3 »
Poprzednia strona Strona 3 z 3