一张图看懂指针

C# 中的指针应用
博客围绕 C# 中的指针展开,虽未给出具体内容,但可推测会涉及 C# 指针的相关知识,如指针的定义、使用方法、应用场景等信息技术领域内容。

在这里插入图片描述

当然有!下面是一个**小白也能看懂的、最简单直白的 C 语言实现方式**,用来: > ✅ 创建一个 10×10 的数组 > ✅ 每个数字是 `int16` 类型(我们用普通整数代替,实际效果一样) > ✅ 随机填入 0 到 100 的数字 > ✅ 用“指针”来传递数组(我们会一步一步解释清楚) > ✅ 输出整个数组 --- ### ✅ 小白版代码(带详细注释) ```c #include <stdio.h> #include <stdlib.h> #include <time.h> // 定义数组大小 #define ROWS 10 #define COLS 10 // 主函数:程序从这里开始 int main() { // 第一步:创建一个10行10列的整数数组 int arr[ROWS][COLS]; // 第二步:设置随机数种子,让每次运行结果不同 srand(time(0)); // 第三步:使用指针调用函数填充随机数 // 把数组的地址传进去(就是第一个位置在哪里) fillArrayWithRandom((int*)arr, ROWS, COLS); // 第四步:打印数组内容 printArray((int*)arr, ROWS, COLS); return 0; // 程序结束 } // 函数:通过指针给数组填随机数 // 参数说明: // ptr -> 数组在内存中的起始地址(可以理解为“地上的起点”) // rows, cols -> 多少行和列 void fillArrayWithRandom(int* ptr, int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { // 计算当前应该填哪个位置:第i行第j列 // 相当于:ptr[i * cols + j] *(ptr + i * cols + j) = rand() % 101; // 随机数 0~100 } } } // 函数:通过指针打印数组 void printArray(int* ptr, int rows, int cols) { for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { // 取出对应位置的值并打印 printf("%4d ", *(ptr + i * cols + j)); } printf("\n"); // 每行结束后换行 } } ``` --- ### 🧒🏻 小白也能懂的解释: | 概念 | 解释 | |------|------| | `int arr[10][10]` | 就像一张 10×10 的表格,能存 100 个整数 | | `srand(time(0))` | 让随机数每次都不一样(不然每次都一样就没意思了) | | `(int*)arr` | 把整个表格变成“一条直线”的地址(内存中其实是连着放的) | | `*(ptr + i * cols + j)` | 找到第 i 行第 j 列的位置。比如第2行第3列就是 `ptr[2*10+3]` | | `rand() % 101` | 随机生成 0 到 100 的数(% 是取余数) | --- ### 🖨️ 示例输出(类似这样): ``` 23 67 12 89 45 34 78 10 99 56 1 77 33 66 22 88 44 55 0 9 50 60 70 80 90 11 21 31 41 51 ... ``` --- ### 💡 为什么说这是“用指针传递”? - 我们把 `arr` 数组交给函数时,并没有复制整个数组。 - 而是告诉函数:“数组放在哪里”(也就是地址)。 - 函数拿着这个地址,直接去修改原来的数据 —— 这就是**指针传递**的核心思想! ✅ 效率高 ✅ 不浪费内存 ✅ 是程序员常用技巧 --- ### 🔁 如果你想改成其他范围? 比如随机数改成 1 到 50: ```c *(ptr + i * cols + j) = rand() % 50 + 1; ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值