新手常見困惑:
int a[10];
for (int i = 0; i < 10; i++) a[i] = i+1;
printf("%d\n", a); // 輸出類似 1244960 (地址值)
期望輸出 12345678910,實際輸出一串數字——這是數組首地址。
printf("%d", a) 將指釖地址按整數格式打印,而非遍歷元素。// 方式 1:循環逐個打印
for (int i = 0; i < 10; i++) printf("%d", a[i]);
printf("\n");
// 方式 2:封裝函數復用
void printArray(int *arr, int n) {
for (int i = 0; i < n; i++) printf("%d ", arr[i]);
printf("\n");
}
printArray(a, 10);
for (int i = 0; i < 10; i++) printf("%d", a[i]); // 直接 %d 無空格
// 或用 sprintf 拼接字符串後一次輸出
數組名是指針,打印需循環;指針指向首元素,地址非內容。
這也是 C 語言「數組與指針等價但不等同」的經典體驗點,搞懂退化規則,指針題再不怕。