首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 指標指向陣列:第二迴圈 scanf 導致程式卡住與邊界錯誤

     編輯:程式設計綜合問答

代碼兩大問題:

  1. 第二個 for 迴圈再次 scanf 讀取,導致程式等待輸入 5 個數字,誤以為無反應。
  2. p < p+5 條件永真(p 遞增),會造成陣列越界訪問。

修正版

int a[5], *p, i;
for (i = 0; i < 5; i++) scanf("%d", &a[i]); // 只讀一次
for (p = a; p < a + 5; p++) printf("%d ", *p); // 正確遍歷輸出

a+5 為陣列尾後位址固定不變,p+5 則隨 p 移動而移動,不可互換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved