












#include<stdio.h>
int main()
{
unsigned short a;
unsigned short *pi=&a;//pi指向内存变量a,访问short类型单元
char *pc=(char *)&a;//pc也指向内存变量a,但访问char类型单元
*pi=0XF0F0;//16进制
*pc=0;//pc的值为0
printf("a=%X",a);//以16进制输出
}

例9-2 输入两个数,并使其从大到小输出
#include<stdio.h>
int main()
{
int *p1,*p2,*p,a,b;
scanf("%d,%d",&a,&b);
p1=&a;p2=&b;
if(a<b)
{
p=p1;p1=p2;p2=p;//p的地址是p1,即p指向a,p1指向b,p2指向a
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n",*p1,*p2);
}

为什么错了
因为他要输入都好才行
换成空格也行

指针和地址运算
指针是地址,地址是一种无符号的整数。但指针却不能像整数那样参与乘法和除法。因为对指针乘以或除以一个数没有任何意义。
指针可以参与加法和减法运算,但其加、减的含义绝对不同于一般数值的加减运算。如果指针p是这样定义的:ptype p;并且p当前的值是ADDR,那么,p±n的值=ADDR±nsizeof(ptype)
也就是说,P将以sizeof(ptype)为单位进行加减,而不是简单地将P的值加、减n。



695

被折叠的 条评论
为什么被折叠?



