本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第2章,第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; } 相关资源:Visual C 开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part1