You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用指针给10×10二维数组加载0-99连续数并实现行操作

原代码问题

原有代码的赋值逻辑仅使用了内层循环变量q,导致每一行的10个元素都是09重复,因此无法输出099的连续值,修改赋值逻辑为p * 10 + q即可解决该问题。

完整实现代码
#include <stdio.h>

// 对应要求c:输出单行内容的函数
void printSingleRow(int *rowHead, int colCount) {
    for (int i = 0; i < colCount; i++) {
        printf("%d\t", rowHead[i]);
    }
    printf("\n");
}

int main() {
    // 1. 创建10×10二维整数数组
    int z[10][10];
    int *myPtr2 = &z[0][0];
    // 对应要求b:指向行的指针索引,可通过rowIdx[n]定位第n行首地址
    int (*rowIdx)[10] = z;
    int p, q, temp;

    // 对应要求a:使用指针加载0~99连续整数
    for (p = 0; p < 10; p++) {
        for (q = 0; q < 10; q++) {
            *myPtr2 = p * 10 + q;
            myPtr2++;
        }
    }

    // 对应要求d:输出交换前的整个数组
    printf("===== 交换前数组内容 =====\n");
    for (int i = 0; i < 10; i++) {
        printf("第%d行:", i);
        printSingleRow(rowIdx[i], 10);
    }

    // 对应要求e:交换第0行与第9行、第3行与第4行内容
    // 交换第0行和第9行
    for (int i = 0; i < 10; i++) {
        temp = rowIdx[0][i];
        rowIdx[0][i] = rowIdx[9][i];
        rowIdx[9][i] = temp;
    }
    // 交换第3行和第4行
    for (int i = 0; i < 10; i++) {
        temp = rowIdx[3][i];
        rowIdx[3][i] = rowIdx[4][i];
        rowIdx[4][i] = temp;
    }

    // 对应要求f:输出交换后的整个数组验证结果
    printf("\n===== 交换后数组内容 =====\n");
    for (int i = 0; i < 10; i++) {
        printf("第%d行:", i);
        printSingleRow(rowIdx[i], 10);
    }

    return 0;
}
实现说明
  • 赋值逻辑修改为p * 10 + q后,指针遍历整个二维数组的内存空间时,会依次写入0到99的连续数值
  • 行指针int (*rowIdx)[10]的类型和二维数组行地址类型匹配,可直接通过下标定位任意一行的首地址
  • 行交换操作通过遍历行内每个元素完成交换,验证输出时可看到第0行和第9行、第3行和第4行内容已互换

内容的提问来源于stack exchange,提问作者Maikayla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 02:09:03