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

大开眼界,原来指针还能这么玩?

在这里插入图片描述

文章目录

    • 第一阶段:基础理解
      • 目标:
      • 内容:
      • 题目:
      • 答案解析:
    • 第二阶段:指针与数组
      • 目标:
      • 内容:
      • 题目:
      • 答案解析:
    • 第三阶段:指针与字符串
      • 目标:
      • 内容:
      • 题目:
      • 答案解析:
    • 第四阶段:指针与函数
      • 目标:
      • 内容:
      • 题目:
      • 答案解析:
    • 第五阶段:复杂指针与多级指针
      • 目标:
      • 内容:
      • 题目:
      • 答案解析:

🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨

第一阶段:基础理解

目标:

理解指针的基本概念、声明、初始化和基本操作。

内容:

指针的基本概念:指针是存储内存地址的变量。
指针的声明和初始化:例如,int *p; 声明了一个指向整数的指针 p。
指针的解引用:使用 *p 来访问指针 p 所指向的值。
指针的运算:指针加减整数、指针比较等。

题目:

声明一个指向整数的指针,并将其初始化为指向一个整数变量的地址。
通过指针解引用访问并修改该整数变量的值。

答案解析:

int a = 10;  
int *p = &a; // 声明一个指向整数的指针p,并将其初始化为指向变量a的地址
*p = 20; // 通过指针p解引用访问并修改变量a的值为20

第二阶段:指针与数组

目标:

理解指针在数组中的应用,包括数组名作为指针、指针遍历数组等。

内容:

数组名作为指针:在表达式中,数组名会被解释为指向数组首元素的指针。
指针遍历数组:使用指针遍历数组元素,并修改或访问它们的值。

题目:

声明一个整型数组,并使用指针遍历数组并打印每个元素的值。
通过指针修改数组中某个元素的值。

答案解析:

int arr[] = {1, 2, 3, 4, 5};  
int *p = arr; // 数组名arr作为指向首元素的指针  
for (int i = 0; i < 5; i++) {  printf("%d ", *(p + i)); // 使用指针p遍历数组并打印每个元素的值  
}
*(p + 2) = 10; // 通过指针p修改数组中第三个元素(下标为2)的值为10

第三阶段:指针与字符串

目标:

理解指针在字符串中的应用,包括字符串的声明、访问和修改。

内容:

字符串的声明和初始化:使用字符数组或字符指针声明字符串。
指针遍历字符串:使用指针遍历字符串中的每个字符。
字符串的修改:通过指针修改字符串中的字符。

题目:

声明一个字符串,并使用指针遍历字符串并打印每个字符。
通过指针修改字符串中的某个字符。

答案解析:

char str[] = "Hello, World!";  
char *p = str; // 字符串str的首地址赋给指针p  
while (*p != '\0') { // 遍历字符串直到遇到空字符'\0'  printf("%c", *p);  p++;  
}
*(p + 7) = 'C'; // 通过指针p修改字符串中第八个字符(下标为7)为'C'

第四阶段:指针与函数

目标:

理解指针作为函数参数的使用,以及指针在函数返回值中的应用。

内容:

指针作为函数参数:通过指针参数在函数中修改外部变量的值。
指针作为函数返回值:返回一个指向局部变量的指针(注意避免悬垂指针问题)。

题目:

编写一个函数,接收一个整数指针作为参数,并通过该指针修改其指向的整数值。
编写一个函数,返回一个指向静态分配内存的字符串的指针。

答案解析:

#include <stdio.h>  void modifyValue(int *p) {  *p = 20; // 通过指针p修改其指向的整数值为20  
}  int main() {  int a = 10;  modifyValue(&a); // 调用函数并传递变量a的地址  printf("%d\n", a); // 输出修改后的值,应为20  return 0;  
}
#include <stdio.h>  char* getString() {  static char str[] = "Hello, World!"; // 使用静态分配内存,避免悬垂指针问题  return str; // 返回指向静态字符串的指针  
}  int main() {  char *p = getString(); // 调用函数并获取返回的字符串指针  printf("%s\n", p); // 输出字符串,应为"Hello, World!"  return 0;  
}

第五阶段:复杂指针与多级指针

目标:

理解复杂指针类型(如指向指针的指针、指向数组的指针等)以及它们在多级指针中的应用。

内容:

复杂指针类型的声明和初始化。
多级指针的解引用和运算。

题目:

声明一个指向整数的指针的指针,并通过它修改一个整数的值。
声明一个指向整型数组的指针,并使用指针遍历数组并打印每个元素的值。

答案解析:

#include <stdio.h>  void modifyValue(int **pp) {  **pp = 30; // 通过二级指针修改其指向的整数值为30  
}  int main() {  int a = 10;  int *p = &a; // 一级指针p指向变量a  int **pp = &p; // 二级指针pp指向一级指针p  modifyValue(pp); // 调用函数并传递二级指针pp  printf("%d\n", a); // 输出修改后的值,应为30  return 0;  
}
#include <stdio.h>  void printArray(int (*arr)[5]) { // 声明一个指向含有5个整数的数组的指针作为函数参数  for (int i = 0; i < 5; i++) {  printf("%d ", *(arr + i)); // 使用指针遍历数组并打印每个元素的值  }  printf("\n");  
}  int main() {  int arr[5] = {1, 2, 3, 4, 5};  printArray(arr); // 调用函数并传递数组名作为指针  return 0;  
}

✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍

http://www.lryc.cn/news/456353.html

相关文章:

  • 揭秘选择知识产权管理系统的常见误区,避免踩坑
  • 计算机组成原理之存储器的分类
  • Linux(不同版本系统包含Ubuntu)下安装mongodb详细教程
  • 如何扫描HTTP代理:步骤与注意事项
  • 【分布式微服务云原生】gRPC与Dubbo:分布式服务通信框架的双雄对决
  • Python | Leetcode Python题解之第450题删除二叉搜索树中的节点
  • [Linux]从零开始的网站搭建教程
  • 牛客——xay loves or与 __builtin_popcount的使用
  • Docker学习和部署ry项目
  • Linux中设置cd命令后直接显示当前目录下的所有文件
  • 【RTCP】报文学习笔记
  • Solidity优质例子(二)物流的增删改查智能合约(附truffle测试)
  • 对android binder的一些疑问及解答
  • 主流麦克风阵列有哪些?
  • 几个快速压缩图片大小的方法!
  • 怎么避免在pod产生-派生炸弹(Fork Bomb)? k8s(kubernetes)
  • MySQL中的嵌套查询
  • win10 提示pl2303hxa已停产,请联系供货商解决方案
  • 浙大数据结构:07-图5 Saving James Bond - Hard Version
  • 【Verilog学习日常】—牛客网刷题—Verilog企业真题—VL69
  • 电商商品数据采集||高并发||多语言请求实例演示|京东|淘宝商品详情数据SKU价格
  • 云手机哪款好用?2024年云手机推荐对比指南
  • 无人机航测内业常用建模软件手册下载(上)
  • Python Django ORM 的工作原理
  • GoLang编程常用规范/工具
  • 数字王国里的虚拟人――技术、商业与法律解读
  • Java后端基础练习|请求参数
  • C# + SQLiteExpert 进行(cipher)加密数据库开发+Costura.Fody 清爽发布
  • MySQL 8.0 新特性之自增变量持久化
  • 网站建设公司哪家好?好的网站建设公司应该有哪些特别之处?