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

C 語言指針傳參報錯:flag 為空指針的修正方法

     編輯:程式設計綜合問答

指針參數必須指向有效內存

調用 sat_add(x, y, p1) 時,p1 必須是已分配變量的地址,不能是 NULL。

錯誤代碼

int32_t *p1 = NULL;
sat_add(x1, y1, p1); // ❌ 解引用 NULL → 崩潰
printf("%d", *p1);

修正代碼

int32_t tp1;          // 分配局部變量
int32_t *p1 = &tp1;   // 取地址傳遞
sat_add(x1, y1, p1);  // ✅ 函數內 *p1 = ... 寫入 tp1
printf("%d", tp1);    // 直接用變量或 *p1

同理修正 p2

uint32_t tp2;
uint32_t *p2 = &tp2;
sat_sub(x2, y2, p2);

核心原則

  • 輸出參數(指針)必須指向調用者分配的有效存儲空間。
  • 函數內部不負責分配輸出緩衝區,除非文檔明確說明返回動態分配內存(需調用者釋放)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved