1.数组的下标总是从0开始吗?
是的,对数组a【max】来说,它的第一个和最后一个元素分别是a【0】a【max-1】
注意:a【max】是一个有效地址,但该地址并不是数组a的一个元素。 有时候容易把数组中的第一个元素认为是下标唯一的元素,其实并不是
首个元素下标为1
2.可以使用数组后面第一个元素么?
可以使用后面第一个元素的地址,但不可以查看该地址的值。
for(i=0; i<max ; ++i )
{
/*do something*/
}
代替
for(p=a ; p< &a [max] ; ++p )
{
/*do something*/
}
5.数组作为参数传递给函数时,可以通过sizeof得到数组的大小吗?
不可以,当把数组作为函数的参数时,你无法在程序运行时通过数组参数本身告诉函数该数组的大小,因为函数的数组参数相当于指向该数组第一个元素的指针。
e.g.
char source[ max ] , dest [ max ] ;
/*......*/
memcpy(dest,source,max);
第二种方法:引入某种规则来结束一个数组
void printMany( char * string [1])
{
int i ;
i=0;
while(string[ i ] !=NULL)
{
puts( strings [ i ]);
++i ;
}
}