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

C 語言指針練習:用指針計算 1 到 100 求和完整代碼

     編輯:C 語言問答

C 語言指針練習:用指針計算 1 到 100 求和完整代碼

通過指針遍歷數組累加,鞏固指針算術與數組名退化為指針概念。

標準實現

#include <stdio.h>

int main() {
    int a[101];          // 索引 1..100 使用,0 位置閒置
    int sum = 0;
    int *p;

    // 初始化數組
    for (int i = 1; i <= 100; i++) {
        a[i] = i;
    }

    // 指針遍歷累加
    for (p = &a[1]; p <= &a[100]; p++) {
        sum += *p;
    }

    printf("1+2+...+100 = %d\n", sum);  // 5050
    return 0;
}

關鍵點解析

代碼含義
int *p;聲明指向 int 的指針
p = &a[1];指向數組首個有效元素
p <= &a[100]指針比較:地址遞增直到尾元素
p++指針算術:地址增加 sizeof(int) 字節
*p解引用:獲取指針指向的值

優化版本:無需數組

int sum = 0;
for (int *p = (int*)malloc(100*sizeof(int)), *end = p+100, i=1; p < end; p++, i++) {
    *p = i;
    sum += *p;
}
free(p - 100);

或直接累加,無需存儲:

int sum = 0;
for (int i = 1; i <= 100; i++) sum += i;
// 或高斯公式:sum = 100 * 101 / 2;

常見錯誤避坑

  • for (p = a; p < a+100; p++) 配合 int a[100] (0-based) 更標準
  • 指針越界:`p <= &a[100]` 合法,但 `p++` 後指向 `&a[101]` 不可解引用
  • 未初始化指針:野指針導致未定義行為
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved