2.4 练习
指针的编程艺术(第二版)
1.请问下面程序的输出结果是什么?并说明其含义。
/* exercise2-1.c */
#include <stdio.h>
#include <conio.h>
int main()
{
char *diamond="拉钻石";
char *p1 = diamond;
char **p2 = &p1;
char ***p3 = &p2;
printf("diamond=%p\n", diamond);
printf("&p1=%p, p1=%p\n", &p1, p1);
printf("&p2=%p, p2=%p\n", &p2, p2);
printf("&p3=%p, p3=%p\n\n", &p3, p3);
printf("以下的方法可得到钻石: \n");
printf("**p3=%s, *p2=%s, p1=%s, diamond=%s\n", **p3, *p2, p1,
diamond);
getch();
return 0;
}
2.改错题:以下程序分别是Peter 与 Jennifer所编写的,有一些错误,请你加以改正。
(1)
/* pointerBugs.c */
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *p;
*p=120;
printf("The address of p is %#x", p);
printf("*p=%d\n");
system("PAUSE");
return 0;
}
(2)
/* constantPointerBugs.c */
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=100, b=200;
const int *p=&a;
int * const q=&b;
printf("a=%d, *p=%d\n", a, *p);
printf("b=%d, *q=%d\n", b, *q);
*p=b;
printf("*p=%d\n", *p);
q=&a;
printf("*q=%d\n", *q);
system("PAUSE");
return 0;
}
时间: 2024-09-25 16:44:13