通过代码加解析的方式带领大家分析 :数组与指针的关系
指针——数组
对于指针,数组,大家到目前为止,大多已经有了详细的了解与认识,并且能够正确的连立起来指针与数组的应用!这一点是非常重要的也是没有办法来取吸取经验的,这就依靠我们多多寻找练习题来刷,毕竟一个好的工程师,没有大量的代码,怎能成就??
对于数组与指针的简单应用场景,笔者仍旧按照代码加解析的方法来涉及!
下面请看笔者的简单代码:通过指针来打印数组元素!(1)
//通过指针来打印数组元素 #include <stdio.h> int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr; int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) { printf("%d ", *p); p++; } return 0; }
在上述代码中,定义了一个int类型的指针p,而且p指向数组arr ,而且数组名arr指的是数组首元素的地址! 假设,我们不知道该数组元素的大小,当然对于简短的数组我们可以去手动来查,但是对于几百几千的数组元素我们也是用手动来查数字蛮??这样的做法累不死人来还!这边还没有查出来整个数组元素的大小,而且竞争者已经将整个代码书写好,并且运行出来得出结果了,这样的对手跟猪一样的队友!优恶自见!因此,我们需要知道,并且正确运用sizeof的去求数组的大小;但是对于字符串,就用库函数strlen()来进行求字符串长度(专用)!
for (i = 0; i < sz; i++) { printf("%d ", *p); p++; }
下面进行对数组元素的打印!通过对 : i = 0; i < sz; i++ 每次循环的应用,循环sz次,每一次都执行:printf("%d ", *p); p++; 在这里用了“*”(解引用操作符)目的是通过数组首元素的地址arr逐步找到整个数组,并且打印出来!p++ :是指,每次都往后走一步,去找到下一个数表的元素!
最后的打印结果为:
上述内容仅仅 是通过指针来打印数组的一种简单方法,下面请看笔者的第二种通过指针打印数组的方法!
下面请看笔者的简单代码:通过指针来打印数组元素!(2)
//通过指针来打印数组元素 #include <stdio.h> int main() { int arr[] = { 10,9,8,7,6,5,4,3,2,1,0 }; int* p = arr; int i = 0; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz; i++) { printf("%d ", *(p + i)); } return 0; }
在上述带段代码中,笔者仅仅是更改了部分代码,并且更改了数组元素,害拍再用上次代码运行后的结果,紧急避嫌!
在这段代码里面,其实主要更改的内容还是for循环里面的代码!
for (i = 0; i < sz; i++) { printf("%d ", *(p + i)); }
每一次的循环都从数组arr(数组的首元素)开始,往后走i步,然后在通过对(p+i) 位置的数组元素来进行“*”解引用,因此可以打印出来该整个数组元素!
最后的打印结果为:
通过上述代码,笔者简单的总结下了下面几个数组与指针的关系!
数组与指针的不同:
1.数组与指针不是一个东西!
2.数组能够存放一组数(一段连续的空间),数组的大小取决于元素个数!
3.指针是一个变量,是用来存放地址的(4或8个字节)
数组与指针的联系:
1.数组名是地址(指针)!
2.数组把首元素的地址,交给一个指针变量后,可以通过指针来访问数组!
本文到此就已经将笔者想要表达的内容,已经大致覆盖,对于该文,笔者若有不同的意见,请及时联系笔者进行更改!