c语言-数组

一维数组, 字符数组

  • 数组: 存储相同数据类型一组数的组合. 数组也是一种数据类型
  • 定义: 数据类型 数组名[常量表达式] = {值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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值