利用指针遍历数组
用指针遍历一维数组
1 #include<stdio.h>
2 int main()
3 {
4 int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};//定义一个一维数组并初始化 5 int i;//定义一个整型变量 6 int *pointer;//定义一个指针变量 7 pointer=a;//并且指针指向数组a 8 for(i=0;i<12;i++)//利用循环输出数组的各个元素 9 printf("a[%d]=%d\n",i,*(pointer+i));//打印每个数组元素
return 0;
10 }
分析:
1.
#include<stdio.h>
第一行是调用库函数,即stdio 就是指 “standard buffered input&output",标是函数中用到了printf这个函数!需要在主函数上进行声明。
2.
int main()
第二行是定义一个int 型的主函数。一个C程序有且只有一个主函数!
3.
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
定义一个一维数组(我的学号末尾是8)并直接进行初始化,也可以先定义后初始化,其中一维数组的长度可以不写。
4.
int *pointer;
定义一个指针变量;之前我总是把指针变量和指针弄混,把书上的定义又看了一遍!指针是地址,而指针变量则是地址变量。
例如:
int i=2;
int *p;
p=&i;
在这三行代码里面,i是一个int型变量,p是一个int型的指针变量,p里面的值是指针!
5.
pointer=a;
在写这一行代码时出现了一个问题,就是一开始我这样写pointer=&a,编译出现了错误!我想了半天也没想出来,通过老师的引导,明白了;首先数组名就是数组的首地址,即a=&a[0],但是两个含义不同,a是默认为数组首地址,但同时也是表示整个数组,所以pointer=&a是不对的!,他不知道该取数组中的哪一个元素的地址!
错误原因:没能够理解定义,按照自己的想法去做!
6.
for(i=0;i<12;i++)
这是一个for循环,可以让数组中每个元素一个个输出即数组遍历!这里要注意()中的语句要用;隔开!!!而且如果循环体中有多个语句时可以用{};其实用while循环也是可以的!不过没有for循环简练!
7.
printf("a[%d]=%d\n",i,*(pointer+i));
这是输出函数,把数组的每一个元素打印出来!这里要注意打印的数据类型,以及输出表列的表达式!
总结:
(1)像在定义一个一维数组时可以不写数组的长度,但是二维数组就必须要写了!数组初始化时,注意数组元素是用{}并且有;
(2)多用注释会节约很多时间。
(3)在学习过程中,要经常复习前面的知识点,不会的地方一定要多查资料和课本!可以巩固和提高自己的专业知识!
(4)学习C语言要有一颗严谨的心,我就是那种容易大意的人,通过C语言的学习让我细心了许多!
(5)实践是学习C语言的捷径!只有实践才会发现很多错误并提高!