当前位置: 首页 > web >正文

《C语言》指针练习题--2

《C语言》指针练习题–2

8. 指针数组

题目描述:
编写一个C程序,定义一个指针数组,用于存储5个字符串的地址。初始化指针数组并打印所有字符串。

解题思路:
指针数组是一个数组,其元素是指向特定类型的指针。在本例中,定义一个指针数组,每个元素指向一个字符串常量。通过遍历指针数组,可以访问和打印所有字符串。

程序流程如下:

  1. 定义一个指针数组,大小为5,每个元素是指向字符的指针。
  2. 初始化指针数组,存储5个字符串的地址。
  3. 使用for循环遍历指针数组,打印每个字符串。

详细代码:

#include <stdio.h>int main() {// 定义并初始化指针数组,存储5个字符串的地址const char *strArray[5] = {"Hello","World","C","Programming","Pointers"};// 打印所有字符串printf("指针数组中的字符串为:\n");for(int i = 0; i < 5; i++) {printf("strArray[%d] = %s\n", i, strArray[i]);}return 0;
}

代码注释:

  • const char *strArray[5]:声明一个指针数组strArray,每个元素是指向常量字符的指针。
  • 初始化指针数组,存储5个字符串的地址。
  • 使用for循环遍历指针数组,通过指针访问每个字符串并打印。

9. 指针与多维数组

题目描述:
编写一个C程序,定义一个3x3的二维数组和一个指向该数组的指针。使用指针访问并修改数组中的元素,然后打印修改后的数组。

解题思路:
指向二维数组的指针需要正确地定义和使用。通过指针运算,可以访问和修改二维数组中的元素。程序流程如下:

  1. 定义一个3x3的二维数组并初始化。
  2. 定义一个指向该二维数组的指针。
  3. 使用指针访问并修改数组中的特定元素。
  4. 打印修改后的数组。

详细代码:

#include <stdio.h>int main() {int arr[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};int (*ptr)[3] = arr; // 指向包含3个整数的数组的指针// 修改数组中的元素,例如将arr[1][1]改为50*(*(ptr + 1) + 1) = 50;// 打印修改后的数组printf("修改后的二维数组:\n");for(int i = 0; i < 3; i++) { // 遍历行for(int j = 0; j < 3; j++) { // 遍历列printf("%d ", *(*(ptr + i) + j)); // 使用指针访问元素}printf("\n"); // 换行}return 0;
}

代码注释:

  • int (*ptr)[3] = arr;:声明一个指针ptr,指向包含3个整数的一维数组(即二维数组的行)。
  • *(*(ptr + 1) + 1) = 50;:通过指针运算访问并修改二维数组中第二行第二列的元素,将其值改为50。
  • 使用嵌套for循环,通过指针访问和打印修改后的数组元素。

10. 动态二维数组

题目描述:
编写一个C程序,使用指针动态分配内存来创建一个二维整数数组。提示用户输入行数和列数,输入数组元素,计算每行的总和,并释放分配的内存。

解题思路:
动态分配二维数组可以通过分配指针数组的内存,再为每个指针分配列的内存。程序流程如下:

  1. 提示用户输入行数和列数。
  2. 使用malloc动态分配内存为行指针数组。
  3. 为每一行分配内存以存储列元素。
  4. 提示用户输入二维数组的元素。
  5. 计算并打印每行的总和。
  6. 释放所有分配的内存。

详细代码:

#include <stdio.h>
#include <stdlib.h> // 
http://www.xdnf.cn/news/17361.html

相关文章:

  • Redisson中的分布式锁
  • uni-app vue3 小程序接入 aliyun-rtc-wx-sdk
  • Vscode Data Wrangler 数据查看和处理工具
  • 如何为WordPress启用LiteSpeed缓存
  • Linux 限制 root 登录 IP 地址的方法
  • Activiti 中各种 startProcessInstance 接口之间的区别
  • Java——详解形参实参方法的重载
  • .NET PDF处理组件IronPDF:如何通过 AI 简化开发人员处理 PDF的方式
  • platform总线简介和使用场景说明
  • 设计模式-装饰模式 Java
  • Web开发-JS应用WebPack构建打包Mode映射DevTool源码泄漏识别还原
  • [激光原理与应用-169]:测量仪器 - 能量型 - 光功率计(功率稳定性监测)
  • RepoCoder:仓库级代码补全的迭代检索生成框架解析与应用前沿
  • 基于Python+Vue+Mysql实现(物联网)智能大棚
  • 【tips】css模仿矢量图透明背景
  • Vue 3 入门教程 9 - 表单处理
  • change和watch
  • 酉矩阵(Unitary Matrix)和随机矩阵
  • 拥抱云原生:从传统架构到云原生架构的演进与实践
  • 慢SQL优化实战:从一例线上慢SQL探究执行引擎工作过程
  • 如何快速掌握Excel公式?14天轻松通关
  • 大疆前端笔试题目详解
  • Kafka数据生产和发送
  • 如何将Dubbo从Zookeeper平滑地迁移到Nacos?
  • OpenCV图像处理入门实战指南
  • 【办公自动化】使用Python来自动化处理Excel表格有哪些方法?
  • 急危重症专科智能体”构建新一代急诊、手术与重症中心的AI医疗方向探析
  • 图像认知与OpenCV——图像预处理4
  • Java并发与数据库锁机制:悲观锁、乐观锁、隐式锁与显式锁
  • NFS 服务器与iSCSI 服务器