array 数组- 重置版(1)




[]( )程序一:

-------------------------------------------------------------------



#include<stdio.h>

#include<string.h>

int main()

{

创建一个数组

int arr1[10];// [常量]

初始化 int arr[10]={1,2,3};不完全初始化,剩下的元素默认初始化0.

char arr2[5];

初始化 char arr[5]={‘a’,‘b’};,不完全初始化,剩下元素默认初始化0.

初始化 char arr[5]=“ab” 这是可行的,因为隐藏一个’\0’,后面的0使我们自己给的(这个字符串都给给它的==),不是系统默认

int n = 5;

char ch[n]; 这样创建数组是错误,因为n还是变量,值是被赋值了,并不会改变它的属性

char arr3[5] = { ‘a’, 98/b的ASCII码等于98/ };//可行

上式等价于下式

char arr3[5] = {‘a’,‘b’}

char arr4[] = “abcd”;//加上后面隐藏的’\0’,大小为5

当我们并没有指定大小的时候,它会根据后面的数据,自己给定大小

char  arr5[] = "abcdef";

printf("%d\n",sizeof(arr5));// 7 sizeof晕倒'\0',把它算进去,在停止计算

printf("%d\n", strlen(arr5));//6 strlen是遇到'\0'(不包含),就停止计算



char arr6[] = { 'a', 'b','c','\0' };

printf("%d\n",strlen(arr6));//如果没有'\0'结束标志符,它会一直算个数,直到遇到'\0',输出的是一个随机数

printf("%d\n", sizeof(arr6));//没有'\0'它就少算一个就是3

return 0;

}




* * *



[]( )程序二:

-------------------------------------------------------------------



#include<stdio.h>

#include<string.h>

int main()

{

char arr[] = "abcdef";//元素下标是从0开始

pritnf("%c\n",arr[0]); //arr[0] == a,表示首元素a,输出结果为a



如果要依次打印字符串所有元素用循环更简单,字符串的 '\0' 是隐藏的,一般是不用打印的

int i = 0;

int len = strlen(arr);// 计算元素个数

for (i = 0; i < len; i++)

{

    printf("%c ",arr[i]);// a b c d e f

}



return 0;

}




* * *



[]( )程序三

------------------------------------------------------------------



#include<stdio.h>

int main()

{

int arr[] = {1,2,3,4,5,6,7,8,9,10};

int sz = sizeof(arr) / sizeof(arr[0]);

// sizeof(数组名)计算的整个数组的字节大小,我们只要再求一个元素的大小就可以了,因为 数组是一群相同类型数据的集合,所以我

// 假设 int a[10]; 数组 a 有 10个 int(4byte) 类型的元素,整个数组的大小就是 4*10 == 40 byte, 数组大小除以数组元素大小,不就是数组元素个数嘛。(40/4 == 10)



int i = 0;

for (i = 0; i < sz; i++)

{

    printf("%d ",arr[i]);

    printf("&arr[%d]=%p\n",i,&arr[i]);// 打印 数组对应下标元素的地址

}



return 0;

}




[]( )程序四(二维数组 - 二维数组 的 列 绝对不能 省略 )

--------------------------------------------------------------------------------------------



#include<stdio.h>

int main()

{

///int arr[3][4];//存储一个三行四列的数据 3是行(3个一维数组),4是列

int arr1[3][4] = {1,2,3,4,5};

假设 数据 是这样存的,在内存是连续存储的12345000…

1234

5000

0000

int arr2[3][4] = { { 1, 2, 3 } , { 4, 5 } };

1 2 3 0

4 5 0 0

0 0 0 0

一行的数据 是根据元素加个后面的{ },方便你们去区分,再根据列数确定 一行有多少个元素

int arr3[][4] = { { 1, 2, 3 }, { 4, 5 } };

1 2 3 0

4 5 0 0

二维数组不管行还是列,下标都是从0开始,而且 二维数组的 行 是可以省略的,它会根据 元素 和 列的值,来确定行数

int arr4[3][4] = { { 1, 2, 3 }, { 4, 5 } };

int i = 0;

for (i = 0; i < 3; i++)

{

    int j = 0;

    for (j = 0; j < 4; j++)

    {

        printf("%d ",arr4[i][j]);1 2 3 0 

                                 4 5 0 0

                                 0 0 0 0

    }

    printf("\n");

}

return 0;

}




* * *



[]( )二维数组在内存中的存储

==========================================================================



在内存中实际存储情况,第一行完了,第二行紧跟在第一行,第三行紧跟在第二行,int a[2][2]={1,2,3,4}, 在内存中存储情况为 1 2 3 4 (小端)

因为 数组的首元素地址是最小的,后面元素,地址依次增大(大约增大 一个元素的类型的字节大小)




[]( )程序一

------------------------------------------------------------------



#include<stdio.h>

int main()

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值