一, 数组的定义和使用
1.关于数组越界
#include<stdio.h>
int main(){
int a=1,c=2;
int b[5]={0}; //初始化
printf("&a=%p,b=%p\n",&a,&c,b);
for(int i=0;i<=8;i++){
printf("%d %p\n",i,&b[i]);
}
printf("\n--------------------------------\n");
for(int i=0;i<=8;i++){
printf("%d ",&b[i]);
}
b[5]=5;
b[6]=6;
printf("\n=%d c=%d");
}
2.二维数组计算某年某月有多少天
#include<stdio.h>
int main(){
int days[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,3031,30,31,3130,31,30,31} };
int year;
int month;
do{
printf("input year,month:");
scanf("%d,%d",&year,&month);
}
while(month<1 ||month>12)
if((year%4==0 &&year%100==0) || year%400==0 )
printf("The number of days is %d\n",days[1][month-1]);
else
printf("The number of days is %d\n",days[0][month-1]);
return 0;
}
3.二维数组,多维数组
#include<stdio.h>
int main(){
short matrix[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; //三行四列,3可省略,大括号里的括号也可以省略
for(int i=0;i<3;i++){
for(int j=0;j<4;j++)
printf("%d ",&matrix[i][j]);
printf("\n");
}
printf("\n--------------------------------\n");
for(int i=0;i<3;i++){
for(int j=0;j<4;j++)
printf("%p ",&matrix[i][j]);
}
return 0;
}
二,数组作为函数参数,数组下标越界
#include<stdio.h>
//一维数组作为函数形参
#define N 100
int main(){
int score[N];
int aver,n;
printf("请输入 n:");
scanf("%d",&n);
readScore( score , n);
printf("\n%d个分数分别是:",n);
for(int i=0;i<n;i++){
printf("%d",score[i]);
}
return 0;
}
void readScore(int s[],int n){ //传递的地址
/*n=6; //下方循环做了6遍,但是只能输出4个值*/
printf("请输入%d个分数,空格隔开:",n);
for(int i=0;i<n;i++){
scanf("%d",&s[i]); //s[i]改变,score[i]即改变
}
}
错误或不足之处,望各位大佬给予指点纠正