一维数组
int 类型
这个是最开始学的,一维数组输入:
int a[20]={0,1,2,3,4,5,6,7};
scanf("%d",&a[0]);
printf("%d",a[0]);
结合指针知识,a可以理解为数组a首元素的地址,因为*a == a[0],所以这段代码还可以这样写:
int a[20]={0,1,2,3,4,5,6,7};
scanf("%d",&a[0]);
printf("%d",*a);
在函数中,如何把数组传入函数?可以传入数组的首地址和数组长度:
void f(int *a,int len)
{
int i;
for(i = 0;i < len;i++)
{
*a = i;
a++;
}
}
int main()
{
int a[8]={0},i;
int len = sizeof(a) / sizeof(a[0]);
f(a,len);
for(i = 0;i < len;i++)
{
printf("%2d",a[i]);
}
return 0;
}
(我一般是把a当作一个地址,它不可以作左值。。。有一个讨论,a是可以被看做指针还是就是指针,const int*类型还是可以作左值的,但是a不可以,所以它应该只可以看作指针)
对了&(*(a+1)) == a+1哎。
char 类型
嗯,打印一个字符串,要传入地址,依次输出后面的字符,直到碰到'\0'
('~'后面全是0,嘿嘿)
char a[10]={'b','o','k','i','~'};
printf("%c\n",*(a+4)); //~
printf("%s\n",(a+1)); //oki~
多维数组(一般都是二维数组)
int 类型
大多数是用来录矩阵吧,我记得有个叫不爱学习的小W的题目。。(没用上二维数组,二维数组太小了,只能开a[100][100])害我白写,啧。
a[i][j]可以看成第i行,第j列,理解的话就是,在一个一维数组上再开一个数组(套娃吗?)
没什么好说的,因为这玩意只能开100*100,题目也。。。难的用不上
char 类型
对,写这个文章我就是想说这玩意,二维数组存字符串啊,多半是件美事。。。
char a[10]={'b','o','k','i','~'};
char *b[2] = {"boki~","winwinwin"};
//这里定义了两个指针,还可以写成下面这样:
//char b[2][10];
一个诡异的尝试,没什么用:
char *b[2] = {"boki~","winwinwin"};
printf("%s\n",b[1]+3);//输出winwin
接下来输入一个字符串:
scanf("%s",b[2]);
scanf(" %c",&b[2][2]);
//b[2]是一个指针,b[2][2]就是一个指针指向的值,所以记得加&
printf("%s",b[2]);
如果我输入shakbee\no会输出什么?
对哇,是shokbee
差不多就是这样了,大一新生,很多不懂的,有什么错误请务必斧正。