目录
二、指针能指向数组?为啥?
1.指针与一维数组
(1)指针变量处理数组
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main(){
int a[10],*p;
srand((int)time(0));
printf("随机生成10个数:\n");
for(p=a;p<a+10;p++){
*p=(int)(10+90*rand()/RAND_MAX);//p本身就是地址,不用加地址符
printf("%5d",*p);
}
printf("\n");
printf("10个数中的奇数是:");
for(p=a;p<a+10;p++)
if(*p%2==0) printf("%5d",*p);
printf("\n");
printf("10个数中的偶数是:");
for(p=a;p<a+10;p++)
if(*p%2!=0) printf("%5d",*p);
return 0;
}
赋初值语句p=a必不可少,若p未赋初值,其在内存中可能任意指向一个地址,有键盘输入的数据替代了该地址处存放的内容,会导致意想不到的错误。
(2)数组的地址
一个数组在内存中是连续存放的,数组的第一个元素地址称为首地址。在C语言中,数组名是该数组的首地址。
int a[10],*p;
p=a