單片機編程中,涉及指針的地方不少,須要多看多練習多總結。
#include <string.h>
#include <stdio.h>
#include <stdlib.h>編程
int main(void)
{
unsigned int *pInt32;//指向32位無符號整數的指針
unsigned int UINT32_1;//32位的無符號整數
unsigned int Array1_UINT32[]={1,9,0,1};//存儲4個32位無符號整數的數組
unsigned short UINT16_1;//16位的無符號整數
unsigned char UINT8_1;//無符號的字符,8位的無符號整數
unsigned char UINT8_2[]={"VC++6.0"};//無符號的字符數組數組
UINT16_1=401; UINT32_1=19; pInt32=&UINT32_1; printf("------\n"); printf( "*pInt32的指針地址:%x,存放的內容:%x,指向的內容:%d \n",&pInt32,pInt32,*pInt32); printf("------\n"); printf( "變量UINT32_1的地址:%x,內容:%%d\n",&UINT32_1,UINT32_1); pInt32=Array1_UINT32; printf( "*pInt32的指針地址:%x,存放的內容:%x,指向的內容:%d \n",&pInt32,pInt32,*pInt32); printf( "Array1_UINT32數組的地址:%x,內容:%d\n",&Array1_UINT32,Array1_UINT32[0]); printf("--強制轉換--\n"); //pInt32=&UINT16_1;//不報錯 pInt32=(unsigned int)(&UINT16_1); printf( "UINT16_1的地址:%x,內容:%d\n",&UINT16_1,UINT16_1); printf( "*pInt32的指針地址:%x,存放的內容:%x,指向的內容:%d \n",&pInt32,pInt32,*pInt32); return EXIT_SUCCESS;
}ide
輸出:指針
變量UINT32_1的地址:12ff40,內容:%d
pInt32的指針地址:12ff44,存放的內容:12ff30,指向的內容:1
Array1_UINT32數組的地址:12ff30,內容:1
--強制轉換--
UINT16_1的地址:12ff2c,內容:401
pInt32的指針地址:12ff44,存放的內容:12ff2c,指向的內容:-859045487code
#include <stdio.h>string
int main(void)
{
char pVar="123";
char p1="YBDWYQCY";
char* p3="YBDWYQCY";
char p5[]="YBDWYQCY";it
printf("指針p1地址:%x,指針p3地址:%x,數組p5地址:%x\n",&p1,&p3,&p5); printf("指針p1內容:%x,指針p3內容:%x,數組p5內容:%x\n",p1,p3,p5); printf("*p1指向:%x,*p3指向:%x\n",*p1,*p3); printf("*(p1+1)指向:%x,*(p3+1)指向:%x\n",*(p1+1),*(p3+1)); printf("----------------\n"); printf("p5[0]地址:%x,p5[0]內容:%c\n",&p5[0],p5[0]); printf("----------------\n"); printf("pVar改變前:%s\n",pVar); pVar=p1; printf("pVar改變後:%s\n",pVar); return 0;
}io
輸出:class
pVar改變前:123
pVar改變後:YBDWYQCY變量
總結:
一、unsigned int *pInt32;//指向32位無符號整數的指針,
pInt32=&UINT32_1;
前面是定義一個指針,pInt32裏面放的是地址,地址指向的是具體的內容(值),而pInt32自己也有地址,它們都是能夠改變的。
是取值符號,pInt32表示取得它地址所指的值,&是獲得地址的符號。
二、指針能夠強制轉換,但類型最好一致,不然有可能出現不可預料的結果。
三、對於定義指針前面的修飾符號,按照從右向左來理解:
const int p; //指針可改變,可是所指的內容不能夠變=》p是指向整數常量的指針
int const p;//指針不可改變,可是所指的內容部可改變=》p是常量指針,指向整數
四、char p和char p是同樣的指針定義,指針定義要連同賦值一塊兒,char *p是標準寫法。