微控制器程式設計中,涉及指標的地方很多,需要多看多練習多總結。
練習一:
#include #include #include int main(void)
;//儲存4個32位無符號整數的陣列
unsigned short uint16_1;//16位的無符號整數
unsigned char uint8_1;//無符號的字元,8位的無符號整數
unsigned char uint8_2=;//無符號的字元陣列
uint16_1=401;
uint32_1=19;
pint32=&uint32_1;
printf("------\n");
printf("------\n");
pint32=array1_uint32;
printf("--強制轉換--\n");
//pint32=&uint16_1;//不報錯
pint32=(unsigned int)(&uint16_1);
return exit_success;
}輸出:
------
------
--強制轉換--
練習二:
#include int main(void)
輸出:指標p1內容:422140,指標p3內容:422140,陣列p5內容:12ff30
*p1指向:59,*p3指向:59
*(p1+1)指向:42,*(p3+1)指向:42
----------------
----------------
pvar改變前:123
pvar改變後:ybdwyqcy
press any key to continue
總結:
1、unsigned int *pint32;//指向32位無符號整數的指標,
pint32=&uint32_1;
前面是定義乙個指標,pint32裡面放的是位址,位址指向的是具體的內容(值),而pint32本身也有位址,它們都是可以改變的。
*是取值符號,*pint32表示取得它位址所指的值,&是得到位址的符號。
2、指標可以強制轉換,但型別最好一致,否則有可能出現不可預料的結果。
3、對於定義指標前面的修飾符號,按照從右向左來理解:
const int *p; //指標可改變,但是所指的內容不可以變=》p是指向整數常量的指標
int* const p;//指標不可改變,但是所指的內容部可改變=》p是常量指標,指向整數
4、char* p和char *p是一樣的指標定義,指標定義要連同賦值一起,char *p是標準寫法。
C語言 指標 陣列中的指標詳解
指標本身已經是非常底層的東西了,什麼是底層?一般說的底層就是和硬體比較接近的地方。另外強調一點 計算機最重要的就是對資料的處理,所以資料的存放你是一定要知道的 資料存放在記憶體中!底層的資料就是二進位制數,這你可以暫時不用管。所以程式設計的本質,就是改變資料的流向。比如和人家qq聊天,就是將資料從頭...
《C語言程式設計》指標篇《二》
如何理解二維陣列元素的位址?要知道,這本書用了整整兩頁的內容來講解這方面的知識,從這裡足以看出來理解通過指標來引用二維陣列是一件比較麻煩的事情,但是我認為理解並不難。一.陣列名a和 a i 二.a i是什麼?1.a i與 a i 實際上是 a i 0 等價。2.a i 與a i 等價 二者都是位址 ...
C語言指標程式設計學習一
c語言的指標確實比較難搞懂,今天再溫習,學習一遍,加深理解,進一步提高c語言程式設計水平。一 指標說明 指標是包含另一變數的位址變數。1 int p p是乙個指標,指向整型數。2 int p p是乙個函式,該函式返回乙個指向整型的指標。3 int p p是乙個指標,該指標指向乙個函式,這個函式返回乙...