ios基础——数组

一,概念

    1,存储一个数据类型的组合。

    2,定义格式:类型  数组名[元素个数]

    数组的个数是从0开始计算。

    Test[0] = 10;

    Test[1] = 18;

    Test[2] = 45

    Test[3] = 54

   下面用一个程序来遍历数组

#include <stdio.h>

int main()
{
    int ages[5] = {10, 8, 23,45, 89};
    
    for(int i = 0; i <5; i++)
    {
        printf("ages[%d]= %d\n",i , ages[i]); //打印某个位置对应的值i,打印5以内的循环并输对应的什ages[i]
    }
    
    return 0;
}


二,初始化注意点

int test[5] = {[3] = 10, [4] = 56}; // 如果数组的元素太多,我们只想用中间的两个可这样写

int test[] =  {12, 34,22,21}; // 只要确定数组元素个数,[]里的数可以不用写

int ages[]; // 错误。因数没有元素个数,也没有值。

int ages[]; // 正确. 只能在定义数组的同时初始化

int ages2['A'] ={19, 43, 54,21}; //正确。 因为'A'的ASCII码值是65

//int size = sizeof(ages2) // 这里可以计算一下它占用的字节数

int ages = 5;
int count[ages] = {12, 33, 28} // 这种是错误写法

int count[ages];
int count[0] = 10;
int count[1] = 13; // 可以定义和初始化


三,利用sizeof计算一下数组长度

#include <stdio.h>

int main()
{
    int ages[] = {10, 22,32, 24,33};
    
    int size = sizeof(ages)/sizeof(int); // 总的字节数除单个的字节数等于元素个数
    
    for(int i = 0; i < size; i++) //遍历每个元素对应的值
    {
        printf("ages[%d] = %d\n",i , ages[i]);
    }
    return 0;
}

四,内存细节分析

   如:char cs[5] = {‘a’, ‘c’,‘d’, ‘f’};

1,这里的第个字节都有自己的地址,地址在内存是由大到小分配的。

2,数组刚好反过来,它是按顺序[0], [1], [2], [3]排下去

3,整个数组也有自己的地址就是数组首元素的地址。所以在用数组作为函数参数里,传递的是地址值,而不是数值。

#include <stdio.h>
int main()
{
    char cs[5] = {'a', 'c', 'd','e'};
    
    // printf("%p\n",cs); // 把地址值输出看看
    
    //利用for循环遍历第个元素的地址值
    for(int i = 1; i < 5; i++)
    {
        printf("cs[%d] = %p",i ,&cs[i]);
    }
    return 0;
}
<pre name="code" class="objc">#include  <stdio.h>
int main()
{
    int ages[3] = {10, 7, 12};
    for(int i = 0; i <3 ; i++) // 遍因int型数据的地址值差
    {
        printf("ages[%d]地址是:%p\n",i ,&ages[i]);
    }
    
    return 0;
}

 

五,数组与函数:如果数组作为函数参数,是在同一块内存中值的传递。

#include  <stdio.h>

//void chage(int array[])
//{
//    array[0] = 100;
//}                   //这里是地址值的转换。第一个元素100可替换

void change(int n)
{
    n = 100;
}

int main()
{
    int ages[6] = {12, 43, 23, 333, 22,21};
    
    // change(ages[0]); //这里只不对外的n有影响
    printf("%d\n",ages[0]);
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值