主要内容:指针和数组细节,"//"的可移植性说明
#include <stdio.h> int main(int argc, char **argv) { int a[10]={1,2,3,4,5,6,7,8,9,0},*p; #if 0 /* 按移植性来说。在《c语言程序设计--现代方法》指出要用当前凝视方法。而不是// 由于一些编译可能不支持 */ // 错误举例 while(*a != 0) { a++; // a++ 相当于a = a+1,不能改变a的值 // 而*(a+1) = 12;是能够的,a[1]= 12; // a 能够取代 &a[0], a+1能够取代&a[1] } #elif 1 p = a; while(*p !=0) { printf("%d ",*p); *p++; } #else int i; // 用指针做数组名 p = a; for(i = 0; i < 10; i++) { printf("%d ",p[i]); } #endif return 0; }
输出: