利用指针遍历数组

用指针遍历一维数组

 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语言的捷径!只有实践才会发现很多错误并提高!

 

posted @ 2017-03-12 09:28  Dragon.Yu  阅读(11336)  评论(3编辑  收藏  举报