C语言编程中的指针-创新互联

单片机编程中,涉及指针的地方很多,需要多看多练习多总结。
#include
#include
#include

目前成都创新互联公司已为上1000家的企业提供了网站建设、域名、网络空间、网站改版维护、企业网站设计、濉溪网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

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;

}

输出:


*pInt32的指针地址:12ff44,存放的内容:12ff40,指向的内容:19

变量UINT32_1的地址:12ff40,内容:%d
pInt32的指针地址:12ff44,存放的内容:12ff30,指向的内容:1
Array1_UINT32数组的地址:12ff30,内容:1
--强制转换--
UINT16_1的地址:12ff2c,内容:401
pInt32的指针地址:12ff44,存放的内容:12ff2c,指向的内容:-859045487


#include

int main(void)
{
char pVar="123";
char
p1="YBDWYQCY";
char* p3="YBDWYQCY";
char p5[]="YBDWYQCY";

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;

}

输出:

指针p1地址:12ff40,指针p3地址:12ff3c,数组p5地址:12ff30
指针p1内容:422140,指针p3内容:422140,数组p5内容:12ff30
p1指向:59,p3指向:59
(p1+1)指向:42,(p3+1)指向:42

p5[0]地址:12ff30,p5[0]内容:Y

pVar改变前:123
pVar改变后:YBDWYQCY


总结:

1、unsigned int *pInt32;//指向32位无符号整数的指针,

pInt32=&UINT32_1;

前面是定义一个指针,pInt32里面放的是地址,地址指向的是具体的内容(值),而pInt32本身也有地址,它们都是可以改变的。

是取值符号,pInt32表示取得它地址所指的值,&是得到地址的符号。

2、指针可以强制转换,但类型最好一致,否则有可能出现不可预料的结果。

3、对于定义指针前面的修饰符号,按照从右向左来理解:

const int p; //指针可改变,但是所指的内容不可以变=》p是指向整数常量的指针
int
const p;//指针不可改变,但是所指的内容部可改变=》p是常量指针,指向整数
4、char p和charp是一样的指针定义,指针定义要连同赋值一起,char *p是标准写法。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站题目:C语言编程中的指针-创新互联
转载注明:http://myzitong.com/article/csccoc.html