C語言基礎(chǔ)教程(二)數(shù)據(jù)類型、變量和運(yùn)算符(11)

字號:

對于指針變量的使用要特別注意。上例中兩個指針在說明前沒有初始化, 因此
    這兩指針為隨機(jī)地址, 在小存儲模式下使用將會有破壞機(jī)器的危險。正確的使用辦
    法如下:
     例如:
     main()
     {
     int *i;
     char *str;
     i=(int*)malloc(sizeof(int));
     i=420;
     str=(char*)malloc(20);
     str="Good, Answer!";
     .
     .
     .
     }
     上例中, 函數(shù)(int*)malloc(sizeof(int))表示分配連續(xù)的sizeof(int)=2個字
    節(jié)的整型數(shù)存儲空間并返回其首地址。同樣(char*)malloc(20)表示分配連續(xù)20 個
    字節(jié)的字符存儲空間并返回首地址(有關(guān)該函數(shù)以后再詳述)。由動態(tài)內(nèi)存分配函數(shù)
    malloc()分配了內(nèi)存空間后, 這部分內(nèi)存將專供指針變量使用。
     如果要使i指向三個整型數(shù), 則用下述方法。
     例如:
     #include
     main()
     {
     int *a;
     a=(int*)malloc(3*sizeof(int));
     *a=1234;
     *(a+1)=4567;
     *(a+2)=234;
     .
     .
     .
     }
     *i=1234表示把1234存放到i指向的地址中去, 但對于*(i+1)=4567, 如果認(rèn)為
    將4567存放到i指向的下一個字節(jié)中就錯了。Turbo C2.0中只要說明i為整型指針,
    則 (i+1) 等價于 i+1*sizeof(int)
    同樣 (i+2) 等價于 i+2*sizeof(int)