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

相关文章
|
17天前
|
C语言
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
C语言:数组和指针笔试题解析(包括一些容易混淆的指针题目)
|
1月前
|
存储 编译器 C语言
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
函数指针&&数组指针&&数组传参的本质&&字符指针(进阶篇)
|
2月前
|
C语言
指针和数组笔试题解析(最详细解析,没有之一)
指针和数组笔试题解析(最详细解析,没有之一)
27 0
|
2月前
|
C语言
指向结构体数组的指针
指向结构体数组的指针
15 2
|
2月前
|
存储 算法 C语言
通过指针引用数组元素
通过指针引用数组元素
21 0
|
2月前
|
C语言 C++
数组元素的指针
数组元素的指针
10 0
|
2月前
|
存储 C++
使用字符指针变量和字符数组的比较
使用字符指针变量和字符数组的比较
14 0
|
17天前
指针指向数组
指针指向数组
17 0
|
19天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
34 1
|
19天前
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
14 0