c语言-数组

来源:互联网 发布:海南省最新网络诈骗案 编辑:程序博客网 时间:2024/06/04 18:13

一维数组, 字符数组

  • 数组: 存储相同数据类型一组数的组合. 数组也是一种数据类型
  • 定义: 数据类型 数组名[常量表达式] = {值1, 值2,..};
  • 作用: 快速定义多个变量.
int a[] = {20, 21, 20, 22, 21}; // 注意: 该种定义方式,系统默认数组中有5个元素short b[5] = {2, 4}; // 注意: 该种数组定义方式, 一定要写数组元素个数
  • 数组元素所占字节数: 数组元素个数 * 单个元素所占的字节数
  • sizeof() : 计算数据类型,所占字节数
  • 数组长度.此处length函数无效(c非面向对象)
  • int count = sizeof(a) / sizeof(int); printf("count = %d\n", count);

访问数组元素,通过下标

  • 数组名[下标]
  • 注意: 数组下标从0开始,c语言不能检测数组下标越界,需要特别注意.
  • 打印 数组a的元素
  • 遍历: 逐个取到数组中的元素

数组排序
- (重点) 冒泡排序(升序): 比较大小再作交换

    int a[] = {23, 53, 21, 55, 54};    int count = sizeof(a) / sizeof(int); // 数组元素个数    int Tang = count - 1; // 比较的趟数 // 第一个元素跟其他元素比较趟数,所以n-1次    int times = count - 1; // 每趟比较的最大次数,该趟可能出现的最大交换次数 n-1    // 外层for循环控制比较趟数    for (int j = 0; j < Tang; j++) {        // 内层for循环控制比较次数        // 内层循环 -j ,是为了调高程序执行效率,可减可不减        for (int i = 0; i < times - j; i++) { //            // 冒泡排序核心: 如果前一个数,比后一个大,就交换            if (a[i] > a[i + 1]) {                int temp = a[i];                a[i] = a[i+1];                a[i+1] = temp;            }        }    }

字符数组

  • 存放字符变量的数组
char a[] = {'i', 'P', 'h', 'o', 'n', 'e'};
  • 字符串,特殊的字符数组,以 \0 结尾. 长度 包含’\0’.
  • 有’\0’结束标识的字符数组也称为字符串
  char b[] = "iPhone";   printf("%lu\n", sizeof(b));
  • 输出字符串: %s , 当遇到\0时结束输出
 printf("%s\n", b);

字符串处理函数有:

  • strlen(char *) 计算字符串长度(不包含’\0’). 注意 sizeof()是计算内存大小,所以包含’\0’.
    unsigned long len = strlen(b);    printf("%lu\n", len);
  • strcpy(char , char ) 字符串拷贝函数: 将后一个字符串中的内容, 拷贝到第一个字符串中
trcpy(b, "aaaa22ddw");printf("%s\n", b);
  • strcat(char , const char ) 字符串拼接,从前一个字符串\0位置开始,拼接后一个字符串
    对第一个字符串定义长度必须要大,否则会溢出.
    char e[4]={'1','2','4','5'};    char j[] = {'0','\0','d'};    char f[]="678";    strcat(b, e);    printf("我%s\n", b);
  • strcmp(char *s1, char *s2) 字符串比较 前一个字符串中的字符,逐个与后一个字符串中的字符相比较(ASCII码表对应的十进制数进行比较),直到不相等,得出比较结果.
    • 当s1 < s2时,返回为负数
    • 当s1 = s2时,返回值= 0
    • 当s1 > s2时,返回正数
  printf("%d\n", strcmp("aadfg", "aadf0"));
0 0
原创粉丝点击