Spis pojęć
Ostatnio zmodyfikowano 2009-01-02 15:52
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: #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 ]; 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; } |
|
1 2 « 3 » |