C语言_数组

来源:互联网 发布:语音识别算法视频教程 编辑:程序博客网 时间:2024/06/02 13:50
C语言中的数组可以是任何数据类型,只是连续字节的区域,
OC中NSArray对象只保存Objective-C对象,不能把基本的C类型放在NSArray中
          NSArray对象会进行边界检查

数组的元素个数可以是常量和符号变量(int a[3+5]/int a[8]/int a
[s[2]] 如果s[2]=8 那么定义的就是int a[8]),但不能是变量(说明:如果在被调用的函数(不包括主函数)中定义数组,其长度可以是变量或非常量表达式。如: void func(int n) {  int a[2*n]// 这是合法的,n的值从实参传来 ...  })

一维数组的初始化
     (1)在定义数组时对全部数组元素赋予初值    //int a[10] = {0,1,2,3,4,5,6,7,8,9};
     (2)可以只给数组中的一部分元素赋值   //int a[10] = {0,1,2,3,4};—>只给前5个元素赋初值,系统自动给后5个元素赋初值为0
     (3)如果想使一个数组中全部元素值为0,可以写成  //int a[10] = {0}或者int a[10] = {0,0,0,0,0,0,0,0,0,0};
     (4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度  //int a[ ] = {1,2,3,4,5};

二维数组
     二维数组定义 :类型说明符 数组名[常量表达式][常量表达式] ——>int a[3][4];// 三行四列的数组,不存在a[3][4]元素
     注:二维数组能形象的表示出行列关系。而在内存中,个元素是联系存放的,不是二维的,是线性的。
     二维数组的初始化:
          (1)分行给二维数组赋初值。  // int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
          (2)可以将所有数据卸载一个花括号内,按数组元素在内存中的排列顺序对个元素赋初值。// int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; —>和第(1)中效果一样
          (3)可以对部分元素赋初值。//inta[3][4] = {{1},{5},{9}};  //支队每一行的第一列赋值
          (4)如果对全部元素都赋初值,则定义数组时对第1维的长度可以不指定,但第2维的长度不能省。//int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};


字符数组:
     char c[10]; int c[10];c[0] = ‘a’;     //由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整数数组存放字符数据
     初始化:如果初值个数小于数组长度,则只将这些字符赋给数组中前面的那些元素,其余的元素自动定为空字符(即’\0’);如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。
     字符数组的输入输出:(逐个字符输入输出,用%c输入或输出一个字符;将整个字符串一次输入或输出,用%s对字符串的输入输出)

C语言中使用字符串处理函数
     puts —— 输出字符串的函数
     gets —— 输入字符串的函数(puts和gets函数只能输出或输入一个字符串,不能写成puts(str1,str2))
     struct —— 字符串连接函数(struct(字符串数组1,字符串数组2);注:字符数组1必须足够大,以便容纳连接后的新字符串,连接时将字符串1后面的’\0’取消,只在新字符串最后保留’\0')
     strcpy和strncpy —— 字符串复制函数(如果复制前未对str1数组初始化或赋值,则str1个字节中的内容是无法预知的,复制时将str2中的字符串和其后的’\0’一起复制到字符串数组1中,取代字符串数组1中的前面6个字符,最后4个字符并不一定是’\0’,而是str1中原有的最后4个字符的内容;strncpy可以将字符串2中前面n个字符复制到字符数组1中去)
     注:不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。
     strcmp —— 字符串比较函数(比较规则:将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),知道出现不同的字符或遇到’\0'为止)
     strlen —— 字符串长度(不包括’\0’;不如说 char str[10] = “China”; str的长度为5)
     strlwr —— 转换为小写的函数
     strupr —— 转换为大写的函数

OC中常用NSString方法
     [str length]; //求字符串的长度
     [str characterAtIndex:?]; //?代表下标,注意不要越界。回去字符串中的字符
     [str substringToIndex:n]; //获取指定长度的字符串,是从头开始截取到n-1下标的内容
     [str substringFromIndex:n]; //从指定位置开始向后截取字符串,一直到结束
     NSRange range = [str rangeOfString:@“hello”]; //查找子串,找不到返回NSNotFound,找到返回location和length(起始位置和长度)
     NSString *str1 = [str substringWithRange:SNMakeRange(4,4)]; //NSMakeRange可以生成结构体
     BOOL ret = [str hasSuffix:@“.com”]; //判断字符串是否已指定的字符串结尾
     BOOL ret = [str isEqualTo:str2]; //比较两个字符串是否相等,相等返回YES,不等返回NO
     NSComparisonResult result = [str1 compare:str2]; //两个字符串比较大小,str1大返回1,相等返回0,小于返回-1
     NSComparisonResult result = [str1 caseInsensitiveCompare:str2]; //不区分大小写比较大小
     [str uppercaseString]; //将所有小写字母转化为大写字符
     [str lowercaseString]; //将所有大写字母转化为小写字符
     [str capitalizeString]; //将字符串中出现的第一个字母转化为大写,其余字母小写




遍历方法:
     for(int i = 0;i < array.count;i++){  }
     for(NSString *obj in array){ }
字符串分割成数组对象与连接
     NSString *array = [str componenteSeparatedByString:@“,”];
     for(NSString *obj in array){NSLog(“%@“,obj)};
链接字符串,下例以空格连接
     str = [array componentsJoinedByString:@“ “];
     NSLog(@“%@“,str);
0 0
原创粉丝点击