指针存储数组 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++的新手们一定要注意平时书写指针的规范,对于一个指针的应用写的好是能让你事半功倍的,指针的类型方面也要灵活的调整,让整个程序可以执行的非常的灵活。

相关文章
|
21天前
使用指针访问数组元素
【10月更文挑战第30天】使用指针访问数组元素。
31 3
|
20天前
使用指针访问数组元素
【10月更文挑战第31天】使用指针访问数组元素。
30 2
|
28天前
|
算法 索引
单链表题+数组题(快慢指针和左右指针)
单链表题+数组题(快慢指针和左右指针)
32 1
|
1月前
|
存储
如何使用指针数组来实现动态二维数组
指针数组可以用来实现动态二维数组。首先,定义一个指向指针的指针变量,并使用 `malloc` 为它分配内存,然后为每个子数组分配内存。通过这种方式,可以灵活地创建和管理不同大小的二维数组。
|
1月前
|
存储
如何通过指针数组来实现二维数组?
介绍了二维数组和指针数组的概念及其区别,详细讲解了如何使用指针数组模拟二维数组,包括定义与分配内存、访问和赋值元素、以及正确释放内存的步骤,适用于需要动态处理二维数据的场景。
|
1月前
|
存储 算法 C语言
C语言:什么是指针数组,它有什么用
指针数组是C语言中一种特殊的数据结构,每个元素都是一个指针。它用于存储多个内存地址,方便对多个变量或数组进行操作,常用于字符串处理、动态内存分配等场景。
|
1月前
魔法指针 之 二级指针 指针数组
魔法指针 之 二级指针 指针数组
19 1
|
1月前
|
存储
一篇文章了解区分指针数组,数组指针,函数指针,链表。
一篇文章了解区分指针数组,数组指针,函数指针,链表。
19 0
|
1月前
|
编译器 C语言
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
【C语言】指针篇-深入探索数组名和指针数组- 必读指南(2/5)
|
3月前
|
搜索推荐 C语言
指针与数组
指针与数组
59 9