给一个数组赋1到10的初始值(指针)
给一个数组赋1到10的初始值(指针)!
指针对于大多数刚开始学习C语言的小白而言,并不陌生,指针,一个形象的代名词,阻碍了不知道多少的人对于C语言,C++的追求(包括笔者也一样)!但是这也仅仅只是刚开始时候,等到对指针的认识逐渐深入,又有了不少独特的认知!
给一个数组赋1到10的初始值,这个问题在我们刚刚接触数组时候就已经有所涉及,但是到了指针层面,写法,含义,又有了不同的表示,下面请看笔者通过对比来进行详细解读!
对于杠学习数组时候的代码:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
for (i = 0; i < 10; i++)
{
arr[i] = i + 1; //i由0到9;i+1由1到10 即将arr[]赋1到10的值
printf("%d ", arr[i]); //打印arr[i]
}
return 0;
}
在这里面用了for循环,数组arr[10]的初始化,等,将数组进行赋值!现在对已经学习过数组的人而言已经简单化了,毕竟但是刚刚学习数组时候,感觉真难,现在想想,都是在不断进化,学习的路上!
输出的结果 显而易见,清晰易懂!
上述是笔者描述的关于学习数组时候所练习的代码,但是,现在已经学习到了指针模块,学习在进步,因此原先的代码,对于有不同的方法也要跟上!
下面请看笔者用指针来对数组进行赋1到10的初始值:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int i = 0;
int* p = arr;
for (i = 0; i < 10; i++)
{
*(p + i) = i + 1;
printf("%d ", arr[i]);
}
return 0;
}
在该段代码里面: int* p = arr; 指针p指向数组arr, arr是数组名,而数组名是数组首元素的地址:即相当于&arr[0]; 因此在该句中: *(p + i) = i + 1; 通过解引用操作符(*),来对arr进行解引用,而在for循环的条件下:i=0;i<10;i++ 依次进行,因此将i+1赋值给数组!所以能够达到想要的目的结果!
该段代码的运算结果如下所示:
对于上述代码,经过改编部分代码片段:同理可得:
#include <stdio.h>
int main()
{
int arr[10] = { 0 };
int* p = arr;
int i = 0;
for (i = 0; i < 10; i++)
{
*p = i + 1;
p++;
printf("%d ", arr[i]);
}
return 0;
}
注意这个代码跟上述代码相比较,在for循环里面,发生了些许改编!
将第一个for循环里面的 *(p + i) = i + 1; 改编为: *p = i + 1; p++; 其实这两者的表达意思是一样的,有异曲同工之处,因为这个是在for循环里面,经过i++, i每一次都会+1,因此对于 : (p+i) 跟p++;有着一样的含义!
因此代码的运行结果也是一样的!
到此为止,笔者已经描述完,若有不足之处,请联系笔者进行更改!
- 点赞
- 收藏
- 关注作者
评论(0)