指针存储数组 C

简介: 指针存储数组 C

前言

C语言的指针在理解之后是非常容易且方便的,但是之前总是编译通过就走了并没有关注warning,学习c++之后因为对指针的使用要求更加严格了一些,之前的不规范指针使用就慢慢暴露出来。


一、如何用指针存数组

数组和函数都表示着一串数据或一条操作的首地址,那么就可以用指针来表示。但具体用什么类型,用几级指针之前我都是囫囵吞枣能跑就行。因为用*a可以来表示一个数组,让我一直以为二维数组是完全可以用**a来表示的,在力扣平台上这样也确实常常能完成题目,但在编译器上一跑很快就能发现**a并不能完成二维数组的功能。这是因为他漏掉了一个很重要的特性:指针+1之后指向新的位置是不同的。这里以a[3][4]举例,正确的写法应该是*a[][4]对于前者+1只跨越sizeof(int)的距离,而后者是4*sizeof(int),他就可以完成二维数组的功能。但若只是存储一个二维数组,你用int *甚至是char*都是可以的,因为他们前面的类型也只代表着他们+1跳过的距离,并不影响他们存储一个首地址

二、指针使用时C与C++的差别

既然随便一个指针都能表示我的数组函数等,那我上面岂不是在说废话吗?注意上面的用法除了正规的写法其他都是会warning的,但是C语言为了方便程序员想在任何时候方便的查找到地址,允许程序对于地址的类型只是决定着该地址每次+1跨越的距离,而没有限制他存什么东西c++在这一方面更加的严格,你会发现你类型不匹配或者是指针的级数不对你都是跑不了代码的,认识正确书写指针的格式还是非常重要的!


总结

以后要学习c++的新手们一定要注意平时书写指针的规范,对于一个指针的应用写的好是能让你事半功倍的,指针的类型方面也要灵活的调整,让整个程序可以执行的非常的灵活。

相关文章
|
27天前
|
搜索推荐 C语言
指针与数组
指针与数组
49 9
|
1月前
|
算法 Java
双指针在数组遍历中的应用
文章深入探讨了双指针技术在数组遍历中的应用,通过实战例子详细解释了快慢指针和首尾指针的不同用法,并提供了解决LeetCode相关问题的Java代码实现。
|
27天前
|
存储 程序员 C语言
指针的高级应用:指针数组、数组指针、函数指针等。
指针的高级应用:指针数组、数组指针、函数指针等。
60 0
|
2月前
|
运维
开发与运维数组问题之指针的加减法意义如何解决
开发与运维数组问题之指针的加减法意义如何解决
36 7
|
2月前
|
C++ 索引 运维
开发与运维数组问题之在C++中数组名和指针是等价如何解决
开发与运维数组问题之在C++中数组名和指针是等价如何解决
21 6
|
2月前
|
存储 C++ 运维
开发与运维数组问题之指针的定义语法如何解决
开发与运维数组问题之指针的定义语法如何解决
26 6
|
3月前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
3月前
|
C语言
【C语言】:详解函数指针变量,函数指针数组及转移表
【C语言】:详解函数指针变量,函数指针数组及转移表
45 2
|
3月前
|
C语言
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
【C语言】:详解指针数组,数组指针及(二维)数组传参(2)
30 1
|
3月前
|
Serverless C语言
【C语言】:对(一维)数组与指针的深入理解(1)
【C语言】:对(一维)数组与指针的深入理解(1)
29 1