Linux 下C語言 指針學習 二 (數組與指針)

不少人經常會認爲指針與數組有着至關曖昧的關係,其實數組並不表明指針,數組的出現是爲了把具備相同類型的若干變量按有序的形式組織起來。而指針的出生是爲了經過指針去訪問內存單元,這是文檔上介紹的,讀起來毫無瑕疵,由於太過官方,我所認知的數組其實就是在內存上申請一塊固定大小的連續空間,注意是連續的空間哦,而且這塊空間只能存放同一類型的數據,何爲同一類型呢,好比說 int a[10];  假設這句代碼是在函數裏的,因此會在棧中申請一塊大小爲sizeof(int)*10 的空間來存放int類型的數據,若是你不知道爲何會在棧裏申請的話,我就在插一句話,若是知道就跳過這句話:c程序在運行時共有兩個存儲區,一個是靜態存儲區,另外一個是動態存儲區,在動態存儲區裏有一個棧和一個堆,函數就存儲在棧上,在函數聲明的變量也天然存儲在棧中,不要問我爲何,這就是規定。數組







指針無論在什麼狀況,永遠都是那麼大的空間,(無符號整型的大小),而數組的大小要看聲明的大小。聲明多大,他就多大,標識符a即表示數組,他記錄了這個數據的頭指針。能夠把這個頭指針值賦給一個指針類型的變量,這樣這個指針類型的變量就指向了這個數組的頭位置;函數

        對於字符數組數組而言,好比說char buf[10]="I AM WK「, 在這句話中,雙引號裏面的內容是放在靜態存儲區的,這句話其實是把靜態存儲區的"I AM WK" 徹底複製到本身的空間裏,而 char *p="I AM WK「  是把 靜態存儲區的"I AM WK" 的首地址 賦給p , 這個靜態存儲區的字符串是一個常量,是不可更改的,因此當你用    *p="ssss"  這樣的複製語句的時候編譯會不經過。spa

相關文章
相關標籤/搜索