任务代码:
(如下)
执行情况:
知识总结:
知识点1:用指针访问数组元素:
单独输出数组的名字就是相当于输出数组首元素的地址!= 数组的名字代表数组首元素的地址
int a[10]={1,2,3,,4,5,6,7,8,9,10};
int *p;//先声明指针变量
p=&a[0]//然后将指针赋予地址
这种写法等同于:
int a[10]={1,2,3,,4,5,6,7,8,9,10};
int *p;//先声明指针变量
p=a;//然后将指针赋予首元素地址
更简便:
int a[10]={1,2,3,,4,5,6,7,8,9,10};
int *p=a;//一步代替两步,声明并赋值地址
*(p+i)代表的是p后面的第i个单元(每个单元就是上图的小方格)!
下面[ ]是一个运算符 ,用于取数组里的值
a代表数组的首地址,i代表后地址后的第i个单元,d代表每个单元所占用的字节数(就是每个小方框所占用的字节数)!
引用数组元素的方法:
范例:
建议使用最下面的那种方法是标准的使用指针访问数组a[10]
代表的是定义指针变量*p,将数组a的首元素地址赋值给p,此事的p代表的是a的首元素地址,然后p<(a+10)代表循环a之后的10个元素,输出值为*p代表指向a[]中值;
#include <stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
for(p=a;p<(a+10);p++)//p++代表指向a[]的下一个单元,也就是顺着之后的地址依次读取
{
printf("%d ",*p);
}
return 0;
}
或者:
#include <stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p;
p=a;//首元素地址赋值
while(p<a+10)
{
printf("%d ",*p++);//根据运算的优先级,先是取值再加加
}
return 0;
}
心得体会: