单片机编程中,涉及指针的地方不少,须要多看多练习多总结。
#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是标准写法。