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

  • Post author:
  • Post category:其他


🎈博客主页:🌈

我的主页

🌈

🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏

🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩

🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠

个人主页





🌟 一、(*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个元素,则该语句将导致未定义的行为。



版权声明:本文为m0_46635265原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。