1. 程式人生 > 其它 >C語言指標與字串——第八週指標

C語言指標與字串——第八週指標

取地址運算

sizeof是一個運算子,給出某個型別或變數在記憶體中所佔據的位元組數

sizeof(int)

sizeof(i)

#include <stdio.h>

int main(){
    int a;
    a=6;
    printf("sizeof(int)=%ld\n",sizeof(int));
    printf("sizeof(a)=%ld\n",sizeof(a));
    return 0;
}

運算子&

作用:獲得變數的地址,它的運算元必須是變數

int i;printf("%x",&i);

地址的大小是否與int相同取決於編譯器

int i;printf("%p",&i);

相鄰地址間差距永遠是4

指標

一個指標型別的變數,就是儲存地址的變數

int i;

int* p=&i;//*,表示p是一個指標

int* p,q;

int *p,q;//p是一個指標指向int,q是一個普通變數

指標變數

變數的值是記憶體的地址

  普通變數的值是實際的值

  指標變數的值是具有實際值的變數的地址

作為引數的指標

void f(int* p);

在被呼叫的時候得到了某個變數的地址;

int i=0;f(&i);

在函式裡面可以通過這個指標訪問外面的這個i

訪問那個地址上的變數*

*是一個單目運算子,用來訪問指標的值所表示的地址上的變數

可以做右值也可以做左值

int k=*p;

*p=k+1;

#include <stdio.h>

void f(int* p);
void g(int k);

int main(){
    int i=6;
    printf("&i=%p\n",&i);//檢視i的地址
    f(&i);//將i的地址交給f函式 
    g(i);//將i的值傳給普通函式g函式 
    return 0;
}
void f(int* p){
    printf(" p=%p\n",p);
    printf ("*p=%d\n",*p);
    *p=26;
}
void g(int k){ printf(" k=%d\n",k); }

指標與陣列

函式引數表裡面的陣列其實就是指標

sizeof(a)== sizeof(int*)

陣列變數是特殊的指標