xt6_1
/*指针变量的含义*/
#include <stdio.h>
main()
{
int i,*p,j;
p=&i;
i=3;
j=(*p)++;
printf("%d,%d,%d\n",j,*p,i);
}
/*3,4,4
为什么*p,i为4,而j为3*/
xt6_2
/*p117 5.1*/
#include <stdio.h>
main()
{
int i,*p;
p=&i;
scanf("%d",p);
while((*p/=10)>=10) ;
printf("%d\n",*p);
}
/*input:5678
output:5
解释输出5的运算过程*/
xt6_3
/*p118动态分配函数,void类型*/
#include <stdio.h>
#include <malloc.h>
main()
{
int *p1;
char *p2;
void *q;
q=malloc(sizeof(int));
p1=(int *)q;
*p1=0x4241;
p2=(char *)q;
printf("%d,%c,%c\n",*p1,*p2,*(p2+1));
free(q);
}
/*16961,A,B
若*p2为C,*(p2+1)为D,则*p1该赋何值?*/
xt6_4
/*指向改变,内容不变*/
#include <stdio.h>
main()
{
int *p1,*p2,*p,a,b;
p1=&a; p2=&b;
scanf("%d%d",p1,p2);
if(*p1<*p2)
{
p=p1;p1=p2;p2=p;
}
printf("%d,%d\n",*p1,*p2);
}
/*说明为何指向改变,内容不变?*/
xt6_4_1
/*指向不变,内容交换*/
#include <stdio.h>
main()
{
int *p1,*p2,t,a,b;
p1=&a; p2=&b;
scanf("%d%d",p1,p2);
if(*p1<*p2)
{
t=*p1;*p1=*p2;*p2=t;
}
printf("%d,%d\n",*p1,*p2);
}
/*说明为何指向不变,内容改变?*/
xt6_5
/*p148 5.11,指针与一维数组*/
#include <stdio.h>
main()
{
float y=0.0,a[]={2.0,4.0,6.0,8.0,10.0},*p;
int i;
p=&a[1];
for(i=0;i<3;i++) y+=*(p+i);
printf("%f\n",y);
}
/*分析运行结果*/
xt6_6
#include <stdio.h>
main()
{
int i,j,a[]={1,2,3,4,5},*p;
for(i=4;i>=0;i--)
{
p=&a[i];
for(j=0;j<=4-i;j++)
printf("%d",*(p+j));
printf("\n");
}
}
/*5
45
345
2345
12345
利用指针变量将上输出改变为:
12345
2345
345
45
5*/
xt6_7
/*p148 5.16*/
#include <stdio.h>
#include <string.h>
main()
{
char s[10],*sp="HELLO";
strcpy(s,sp);
s[0]='h';s[6]='!';
printf("%s\n",s);
}
/*分析运行结果*/
xt6_8
/*z237 5*/
#include <stdio.h>
main()
{
int j,a[]={1,3,5,7,9,11,15},*p;
for(j=3;j;j--)
{
p=&a[j];
switch(j)
{
case 1:case 2:printf("%d ",*p);break;
case 3:printf("%d ",*p);
}
}
printf("\n");
}
/*分析运行结果*/
xt6_9
/*指针变量的含义*/
#include <stdio.h>
main()
{
char p[]="Computer!",*s=p;
while(*s)
{
if(*s=='C') (*s)++;
s++;
}
printf("%s\n",p);
}
xt6_21
/*p117 5.1*/
#include <stdio.h>
main()
{
int i,*p;
p=&i;
scanf("%d",p);
while(*p>=10) *p/=10;;
printf("%d\n",*p);
}
/*input:5678
output:5
解释输出5的运算过程*/
xt6_51
/*指针与一维数组*/
#include <stdio.h>
main()
{
int i,j,a[]={1,2,3,4,5},*p;
for(i=0;i<5;i++)
{
p=&a[i];
for(j=0;j<5-i;j++)
printf("%d",*(p+j));
printf("\n");
}
}
/*分析运行结果*/
xt6_61
#include <stdio.h>
main()
{
int i,j,a[]={1,2,3,4,5},*p;
for(i=0;i<5;i++)
{
p=&a[0];
for(j=0;j<i+1;j++)
printf("%d",*(p+j));
printf("\n");
}
}
/*1
12
123
1234
12345*/
|