有关数组(一维数组)

数组的定义(一维数组): (类型名  数组名[数组元素个数]  =  {} )数组

定义一个数组须要给定数组的类型,以及数组所包含元素的个数,如: int ar[10] = {};在定义数组时若不对数组进行初始化,里面为随机值,且在后面对数组进行赋值不能总体的进行spa

如:  ar[10] = {1,2,3,4,5,6,7,8,9,10}(error) , 这种写法是错误的,只能经过访问数组内的每个元素对其进行赋值:如经过循环:指针

int ar[] = {1,2,3,4,5,6};//定义一个已初始化且包含六个整型元素的数组ar.
//int ar[] = {};error

int br[10];//定义一个未初始化的包含十个整型元素的数组br.
for
(int i = 0 ; i < 10; i++) //利用循环对br进行赋值 { br[i] = i+1; }

对数组进行赋值.code

定义数组若未给定元素个数,则须要在{}内填入数据,不然将报错:如:int ar[] ;(error),正确写法应为 int ar[] = {1,2,3};blog

 

数组的元素的个数:编译

数组元素的个数能够经过(sizeof(ar)/sizeof(ar[0]))计算获得.其中sizeof(ar)为整个数组的大小,sizeof(ar[0])指的是数组元素类型的大小.class

 例:变量

int main()
{
    int ar[] = { 1,2,2,2,2,2,2,23,2,3,2,1, };
    int size = 0;
    printf("ar size = %d", sizeof(ar) / sizeof(ar[0]));
    return 0;
}

运行结果:
循环

 

数组的访问:im

下标访问: ar[i]    (下标访问时中括号外面的变量有多是数组名,也有可能为指针   =>    i[ar])

基地址访问: *(ar + i),   i[ar]=>*(i+ar)

其中下标访问在编译连接过程会转化为指针访问 即基地址访问.

 

数组名:

除了在sizeof(ar) 以及 定义一个指向数组的指针int (*p)[2] = &ar 表明整个数组,在其余状况下,数组名会退化成,指向数组首元素的地址的指针.此时没法对数组名进行加一以及赋值操做.

即此时数组名ar 做为数组首元素地址时是一个指针常量没法进行ar++或ar = ar+1等操做!

相关文章
相关标签/搜索