给一个数组赋1到10的初始值(指针)!
指针对于大多数刚开始学习C语言的小白而言,并不陌生,指针,一个形象的代名词,阻碍了不知道多少的人对于C语言,C++的追求(包括笔者也一样)!但是这也仅仅只是刚开始时候,等到对指针的认识逐渐深入,又有了不少独特的认知!
给一个数组赋1到10的初始值,这个问题在我们刚刚接触数组时候就已经有所涉及,但是到了指针层面,写法,含义,又有了不同的表示,下面请看笔者通过对比来进行详细解读!
对于杠学习数组时候的代码:
#includeint 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的初始值:
#includeint 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赋值给数组!所以能够达到想要的目的结果!
该段代码的运算结果如下所示:
对于上述代码,经过改编部分代码片段:同理可得:
#includeint 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++;有着一样的含义!
因此代码的运行结果也是一样的!
到此为止,笔者已经描述完,若有不足之处,请联系笔者进行更改!