A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

数组的基本概念及分类
     数组:把具有相同类型的若干变量安装有序的形式组织起来。这些按序排列的同类型数据的集合称为数组。
      数组元素:构成数组的数据。每个数组元素有相同的名称,不同的下标。
      数组下标:是数组元素位置的一个索引。从0开始。
      维数:数组元素下标的个数。根据维数可以分为一维数组,二维数组,三维数组和多维数组。
      按存储内容分类:数组数组、字符数组、指针数组和结构数组。
一  一维数组
         1 一维数组的定义
         如果一个数组所有的元素都不是数组,这种数组称为一维数组。
         数组的定义方式:
         类型说明符  数组名[常量表达式];
         类型说明符:基本数据类型或者构造数据类型。
         数组名:用户定义的数组标识符。
         方括号内:数组元素的个数。
         注意
         a 数组的长度可以是常量也可以是常量表达式还可以是宏。不可以是变量。
         b 数组表示符遵守标识符命名规范。
         c 数组名不能与其他变量名同名。
         2一维数组的初始化
         给每个数组赋予初值。初始化是在编译阶段进行的。
         a 定义的同时初始化
         类型说明符 数组名[常量表达式]={值列表};
         int arr[3]={1,2,3};
         类型说明符 数组名[]={值列表};
         int arr[]={1,2,3};
         元素的个数决定了数组的长度。
         b 定义的同时部分初始化
         类型说明符 数组名[常量表达式]={部分值列表};
         int arr[3]={1,2};
         int arr[3]={[1]=12};
         将下标为1的元素赋值为12
         c 先定义数组后初始化
         定义数组: int arr[3];
         初始化:a[0]=1;
                        a[2]=2;
         注意
         数组未初始化的初值为随机值。
         数值型数组部分初始化的数组其他元素初值为0.
         字符型数组部分初始化的数组其他元素初值为ascii码的0.
         3一维数组的引用
         数组名[下标];  下标从0开始。
         4一维数组的存储方式。
         a 计算机会给数组分配一段连续的内存空间。
         b 数组名代表数组的首地址,从首地址位置依次存入数组的第一个,第二个…第n个元素。数组收地址==数组第一 个元素的首地址==数组名
         c每个元素占用空间的大小取决于数组类型。
         d元素地址是连续的。
         5一维数组长度计算方法
         计算数组总长度(字节):sizeof(数组名)数据类型长度:sizeof(数据类型)
         数组长度=数组总长度/数组类型;
         注意 数组越界问题。
         6数组元素作为函数参数
         a 每个元素作为函数实参。
         b 数组名作为函数的形参和实参。
                   函数调用时,实参和形参之间是地址传递,将实参数组的首地址传给形参数组   
         函数定义
             返回值类型  函数名(数组类型参数名称[]){
                    函数体;
                   }
         函数调用
         函数名(数组名);
          注意
         形参数组和实参数组的数据类型必须一致。
         形参数组的长度可以不写。
         函数体内无法计算形参数组的长度。
二 二维数组
         特殊的一维数组,一维数组的每个元素又是一个一维数组。
         1 二维数组的定义
         类型说明符 数组名[行数][列数]
         2 二维数组初始化
         1) 完全初始化
         int a[2][3]={{1,2,3},{4,5,6}};
         int a[2][3]={1,2,3,4,5,6};
        2)可以省略第一维长度,跟一维数组省略长度类似
        3)部分初始化
            int a[2][3]={1,2,3};
            int a[2][3]={{1},{2},{3}};
          4)先定义后初始化
              int a[2][3];
                   a[0][0]=1;
                    ……
      3  二维数组的遍历
             双下标形式
             数组名[行下表][列下标];
             双循环遍历,外层循环遍历行,内循环遍历列
      4  二维数组的存储
             a计算机分配连续的内存空间
             b数组名代表数组首地址。
             c每一行存储方式,从行首地址开始,依次存储第一个,第二个…
             d每个元素的占用字节数相同,取决于数组类型
             e 数组元素之间地址连续。
      5 二位数组做参数
             类似一维数组。
三 字符串
         字符串是位于双引号中的字符序列。
         在内存中以”\0”结束,所占字节比实际字节多一个。作为字符串的结束符。
         C语言中没有字符串变量。可以用字符数组存放字符串。
         1 字符数组的定义
                        char数组名[数组长度];
                  char  ch[10]=”ABCDEF”;
         2 字符数组的初始化
                  参考数值数组的初始化。
                  char  str[4]={“sdaddsa”};
                   char str[]=“dadada”;
         注意
         数组长度>实际长度+1
         可以在定义数组并赋值的时候不添加数组长度
         char str[]=“dadada”;
         3 字符数组的引用
         1)类似数值数组用%c打印
       2)以%s打印整个字符串数组。输出一条字符串。遇到”\0”结束。
         3)以%s接收键盘输入的字符串,遇到字符串空格结束。并且输入的长度小于字符数组的长度。
         4 字符数组的长度
      sizeof(数组名)
         5 字符数组和普通数组的区别
         1) scanf和printf时候都 可以用%s进行字符串的输入输出。
         2) 字符串数组初始化的时候可以去掉大括号。
         char str[10]=”sdadas”;
         6 字符串处理函数
         使用函数的时候需要包含string.h的头文件
         1) 字符串输出函数puts
         puts(地址);打印该地址之后的字符串遇到“\0”为止
         可以自动换行
         2) 字符串输入函数gets
         gets(地址);
         会有警告,输入长度可能会大于数组长度。
         3) 连接字符串strcat
         strcat(str1,str2);将字符串str2连接到str1之后。赋值给str1.
         4) 字符串拷贝函数strcpy
         strcpy(str1,str2);将str2copy到str1中。会覆盖str1之前的值。
         5) 字符串比较函数strcmp
         strcmp(str1,str2); 比较两个字符串的大小,比较方法是从第一个字符开始逐个比较字符的ascii值遇到不同的为止。
                   返回值 >0 str1>str2  
                   返回值<0   str1<str2
                   返回值=0   str1==str2
         6) 字符串长度计算strlen
         计算字符串的长度 不计算“\0“
         strlen(str);

3 个回复

倒序浏览
明天就学到这块了!
回复 使用道具 举报
刚刚学习了 字符串 感觉还好理解

点评

还好吧,学了oc感觉就好点了!  发表于 2015-11-20 08:14
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马