一.一维数组
一般形式:<存储类型> <数据类型> <数组名> [<常量或表达式>]
内容 | 含义 |
---|---|
数组名 | 代表起始地址,常量 |
数组长度 | 可用sizeof()求得 |
数组使用 | 只能逐个引用 |
数组初始化 | int a[ ]={1,2,3…} |
#include<stdio.h>
int main()
{
int a[6]={1,2,3,4,5,6},i;
for(i=0;i<6;i++)
printf("%p %d\n",&a[i],a[i]);
printf("%p\n",a);
printf("%d\n",sizeof(a));
return 0;
}
地址1 1
地址2 2
.... .
24
二.二维数组
一般形式:数组名[常量表达式][常量表达式](行数可省略,列数不可省略
存储方式: 按行数优先排序的一维存储
#include<stdio.h>
int main()
{
int a[2][3];
int i,j;
for (i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%p ",&a[i][j]);
putchar('\n');
}
printf("%p %d\n",a,sizeof(a));
printf("%p %d\n",a[0],sizeof(a[0]));
printf("%p %d\n",a[1],sizeof(a[1]));
return 0;
}
二维数组初始化:int a[2][3] ={{1,6},{2}};可以忽略,列数不能省略。
#include<stdio.h>
int main()
{
int a[2][3]={{1,6,9},{}};
int i,j;
for (i=0;i<2;i++){
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
putchar('\n');
}
return 0;
}
1 6 9
0 0 0
多维数组:int c[1][2][3]
三.字符数组
内容 | 含义 |
---|---|
字符数组 | 元素的数据类型为字符数组 |
初始化 | 逐个赋值或用字符串常量char ch[5]={‘B’,‘o’,‘y’}; |
形式 | char c[ ] ={“Boy”} ,ch[3][4];以‘\0’结尾 |
#include<stdio.h>
int main()
{
char arr1[]={'a','b','c'};
char arr2[6]={'a','b','c'};
int i,n;
n= sizeof(arr1)/sizeof(char);
for(i=0;i<n;i++)
putchar(arr1[i]);
putchar('\n');
n= sizeof(arr2)/sizeof(char);
for(i=0;i<n;i++)
putchar(arr2[i]);
putchar('\n');
return 0;
}
输出:
abc
abc
#include<stdio.h>
int main()
{
char arr1[]={'a','b','c'};
char arr2[6]={'a','b','c'};
printf("arr1:%s %p\n",arr1,&arr1[2]);
printf("arr2:%s %p\n",arr2,arr2);
return 0;
}
#include<stdio.h>
int main()
{
char fruit[][20]={"banana","apple","strawmerry","watermelen"};
int i,j,n,m;
n=sizeof(fruit)/sizeof(fruit[0]);
m=sizeof(fruit[0])/sizeof(char);
for(i=0;i<n;i++){
for(j=0;j<m;j++)
putchar(fruit[i][j]);
putchar('\n');
}
return 0;
}
#include<stdio.h>
int main()
{
char fruit[][20]={"banana","apple","strawmerry","watermelen"};
int i,n;
n=sizeof(fruit)/sizeof(fruit[0]);
for(i=0;i<n;i++){
printf("%s\n",fruit[i]);
}
return 0;
}
练习题
1.冒泡排序
2.打印杨辉三角的前十行
3.有一个3x4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号;
4.输入一字符串,然后将其逆序输出