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

【C语言】(*s)[3]和*s[3]区别

🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页


目录

  • 🌟 一、(*s)[3]
  • 🌟 二、*s[3]


🌟 一、(*s)[3]

在C语言中,(*s)[3]s[3]有着不同的含义和用法。

(*s)[3]表示s是一个指向长度为3的一维数组的指针,即s指向的是一个包含3个元素的数组,每个元素的类型是指针所指向的类型。可以使用(*s)[i]来访问该数组中的元素,其中i为索引值。

例如,下面的代码定义了一个指向长度为3的整型数组的指针s,并使用(*s)[i] 来访问数组中的元素:

int arr[3] = {1, 2, 3};
int (*s)[3] = &arr;
printf("%d\n", (*s)[0]); // 输出1
printf("%d\n", (*s)[1]); // 输出2
printf("%d\n", (*s)[2]); // 输出3

🌟 二、*s[3]

*s[3]则表示s是一个指向指针类型的数组,且取该数组的第四个元素的值,即s[3]表示取出指针类型数组中的第四个元素,然后使用解引用符*取出该元素所指向的值。

例如,下面的代码定义了一个包含3个指向整型变量的指针的数组s,并使用*s[3]来访问数组中的第四个元素所指向的值:

int a = 10, b = 20, c = 30;
int* arr[3] = {&a, &b, &c};
printf("%d\n", *arr[0]); // 输出10
printf("%d\n", *arr[1]); // 输出20
printf("%d\n", *arr[2]); // 输出30
printf("%d\n", *s[3]);   // 输出30

注意,*s[3]只有在s指向的数组中第三个元素也是一个指针时才是合法的。如果s指向的数组不足3个元素,则该语句将导致未定义的行为。


http://www.kler.cn/a/3147.html

相关文章:

  • python学opencv|读取图像(四十九)原理探究:使用cv2.bitwise()系列函数实现图像按位运算
  • 基于SpringBoot的假期周边游平台的设计与实现(源码+SQL脚本+LW+部署讲解等)
  • 高级同步工具解析
  • Visual Studio Code修改terminal字体
  • 【LLM】deepseek多模态之Janus-Pro和JanusFlow框架
  • 58.界面参数传递给Command C#例子 WPF例子
  • JVM垃圾回收机制
  • Java设计模式(二)——工厂模式
  • 文件上传的多种利用方式
  • JeecgBoot 3.5.0 版本发布,开源的企业级低代码平台
  • Winform/Csharp中使用StackExchange.Redis连接Redis存取数据并序列化对象/反序列化(支持redis key 模糊搜索)
  • 如何将字符串反转?
  • Java开发常用网址,推荐一些能帮助我们提升开发效率和学识巩固的网址,值得收藏
  • 反向传播算法的算法原理与Python实现
  • 6.网络爬虫——BeautifulSoup详讲与实战
  • C/C++获取文件名的方法(__FILE__,__builtin_FILE(),__BASE_FILE__)
  • 数据结构中的堆
  • java与Spring的循环依赖
  • 指针进阶(中)
  • 对于并发的学习-AQS
  • JVM学习.04. Java内存模型与线程模型
  • 【数据结构与算法】队列和栈的相互实现以及循环队列
  • 有手就行 -- 搭建图床(PicGo+腾讯云)
  • 交叉编译说明:工具链安装和环境变量配置
  • 如何优雅编写测试用例
  • Linux基本命令