首页 > 其他分享 >C语言学习

C语言学习

时间:2024-08-08 21:53:03浏览次数:9  
标签:sz arr int C语言 学习 ++ 数组 printf

学习内容

一维数组,二维数组 创建 ,初始化,数组名

代码笔记

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//一维数组
//数组的创建
//数组:相同元素类型的集合
//数组的创建方式
//typt_t     arr_name   [const_n];
//元素类型              常量表达式,用来指定数组大小

//int main()
//{
//    //创建数组
//    int arr[10];
//    char ch[5];
//    double data1[20];
//    double data2[20];
//
//    int n = 10;
//    int arr2[n];
//    //在c99标准之前,数组的大小必须是常量
//    //之后可以是变量,为了支持变长数组
//
//}

//数组的初始化:创建数组的同时给它赋合理的值
//int main()
//{
//    int arr[10] = { 1,2,3 };//不完全初始化,剩余的元素默认初始化为0
//    int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };//完全初始化
//
//    char ch1[10] = "abc";//a b c \0 0 0 0 0 0 0
//    char ch2[10] = { 'a','b','c' };//a b c 0 0 0 0 0 0 0
//}

//一维数组的基本使用 :[]
//int main()
//{
//    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//[]下标引用操作符        
//    //下标        0 1 2 3 4 5 6 7 8 9 
//    int i = 0;
//    int sz = sizeof(arr) / sizeof(arr[0]);//数组的大小可以被计算
//    /*for (i = 0; i < sz; i++)
//    {
//        printf("%d\n", arr[i]);
//    }*/
//
//    /*for (i = sz - 1; i >=0; i--)
//    {
//        printf("%d\n", arr[i]);
//    }*/
//
//    //打印数组的每个元素的地址
//    for (i = 0; i < sz; i++)
//    {
//        printf("&arr[%d]=%p\n",i, &arr[i]);//整形元素占4个字节 每个地址之间相差4
//    }
//    //数组在内存中是连续存放的
//    return 0;
//}

//二维数组
//二维数组的创建及初始化
//int main()
//{
//    // 1 2 3 4
//    // 2 3 4 5 
//    // 3 4 5 6 
//    int arr1 [3][4] = {1,2,3,4,2,3,4,5,3,4,5,6};//三行 四列 按顺序存储 剩余元素默认初始化为零
//    int arr2 [3][4] = { {1,2},{2,3},{3,4} };//数据不足 提前分组
//    int arr3 [ ][4] = { 1,2,3,4,2,3, };//可以省略行但是不能省略列
//    /*char arr3 [5][10];*/
//    return 0;
//}

//二维数组的使用
// 行,列都从0开始
//1 2 3 4 
//2 3 4 5 
//3 4 5 6
//int main()
//{
//    int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
//    int i = 0;
//    //全部打印
//    /*for (i = 0; i < 3; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 4; j++)
//        {
//            printf("%d ", arr[i][j]);
//        }
//        printf("\n");
//    }*/
//
//    //打印某一元素
//    /*printf("%d\n", arr[2][2]);*/
//    
//    //打印输入的数组
//    /*for (i = 0; i < 3; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 4; j++)
//        {
//            scanf("%d", &arr[i][j]);
//        }
//    }
//    for (i = 0; i < 3; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 4; j++)
//        {
//            printf("%d ", arr[i][j]);
//        }
//        printf("\n");
//    }*/
//
//    
//    
//    printf("%d", sz);
//    return 0;
//}

//int main()
//{
//    int arr[3][4] = { 1,2,3,4,2,3,4,5,3,4,5,6 };
//    int i = 0;
//    
//    for (i = 0; i < 3; i++)
//    {
//        int j = 0;
//        for (j = 0; j < 4; j++)
//        {
//            printf("&arr[%d][%d]=%p\n",i,j, &arr[i][j]);//二维数组存储也时在内存中连续存放的
//        }
//    }
//    return 0;
//}

//数组越界
//数组的下标是有范围限制的 数组的下标是从0开始的,如果数组有n个元素,最好一个元素的下标就是n-1。
//所以下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问
//C语言本身时不做数组下标的越界检查,编译器也不一定报错,并不意味这程序就是正确的,需要程序员自己检查。


//数组作为函数参数
//将数组排成升序
//0 1 2 3 4 5 6 7 8 9 
//采用冒泡排序算法,对数组进行排序
//形参是指针的形式
//void bubble_sort(int* arr,int sz)
//形参是数组的形式
//void bubble_sort(int arr[],int sz)
//{
//    int k = 0;
//    //趟数
//    for (k = 0; k < sz-1; k++)
//    {
//        int i = 0;
//        //一趟冒泡
//        for (i = 0; i < sz -(k+1); i++)
//        {
//            
//            if (arr[i] > arr[i + 1])
//            {
//                //交换
//                int j = arr[i];
//                arr[i ] = arr[i+1];
//                arr[i+1] = j;
//            }
//        }
//    }
//}
//
//
//int main()
//{
//    int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
//    int sz = sizeof(arr) / sizeof(arr[0]);
//    bubble_sort(arr,sz);
//
//    int i = 0;
//    for (i = 0; i < sz; i++) 
//    {
//        printf("%d ", arr[i]);
//    }
//    
//    return 0;
//}

//数组名
//数组名确实能表示首元素的地址,但有两个例外
//1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节
//2.&数组名,这里的数组名表示整个数组,取出整个数组的地址
//int main()
//{
//    int arr[10] = { 0 };
//    printf("%p\n", arr);//arr是首元素的地址
//    printf("%p\n", arr+1);
//    printf("\n");
//    printf("%p\n",&arr[0]);//首元素的地址
//    printf("%p\n", &arr[0]+1);
//    printf("\n");
//    printf("%p\n", &arr);//数组的地址  移动了一整个数组的空间
//    printf("%p\n", &arr+1);
//    printf("\n");
//    int n = sizeof(arr);
//    printf("%d", n);
//}


//二维数组的数组名理解
//int main()
//{
//    int arr[3][4];
//    //int sz = sizeof(arr);
//    //printf("%d\n", sz);
//    arr;//二维数组的数组名也表示数组首元素的地址
//
//    //计算行数
//    //int sz = sizeof(arr) / sizeof(arr[0]);
//    //计算列数
//    //int sz = sizeof(arr[0])/sizeof(arr[0][0])
//    return 0;
//}

感悟思想

整理清楚 加油!

标签:sz,arr,int,C语言,学习,++,数组,printf
From: https://blog.csdn.net/lovemelater618/article/details/141037116

相关文章

  • maven学习第一天
    核心功能依赖管理1.提取版本号统一管理在property标签内添加技术名.version如下图然后在依赖标签内写入如下格式即可2.引入依赖作用域在scop标签内定义依赖范围,默认的作用范围为compile3.依赖传递和冲突概念如下:依赖传递和依赖冲突常见的问题依赖传递常见的下载......
  • C语言--函数
    函数的概述:函数:实现一定功能的,独立的代码模块。函数一定是先定义,后使用使用函数的优势:·我们可以通过函数提供功能给别人使用,也可以使用别人提供的函数,减少代码量               ·借助函数可以减少重复的代码               ·实现结构化(......
  • freertos学习笔记(十)事件标志组
    事件标志组相当于用户平时定义的Flag,事件标志,不过freertos支持将该标志组作为启动task的条件概述分为8位和24位的模式(通过设置宏来配置)每一位有0和1两个状态用法用于平常程序的标记位用于task之间的同步任务a先到达同步点,进入阻塞态设置任务a的事件标记位检查其......
  • 学习日常:造数据 - 上
    前言上次自己造数据,感悟颇丰,今天就来写一下这个话题。陈老师将这个任务交给我们时,给了我们一个板子,姑且叫它build_data.cpp:/*测试数据生成说明:1.本文件放入标程同文件夹2.在标程内贴入右边语句(不要修改):freopen("data.in","r",stdin);freopen("data.out","w",stdout);3.......
  • C语言数组练习
    数组作业一维数组练习题题目1键盘录入一组数列,利用冒泡排序将数据由大到小排序#include<stdio.h>intmain(){ intt[100],num,tmp; printf("请输入数字个数:"); scanf("%d",&num); printf("请输入%d个数字:\n",num); for(inti=0;i<num;i++){ sc......
  • Redis学习笔记_1_基本安装与使用
    Redis入门篇1初识RedisRedis是一种键值型的NoSql数据库键值型:指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至jsonNoSql:相对于传统关系型数据库而言,有较大差异1.1认识NoSQLNoSql可以翻译做NotOnlySql(不仅仅是SQL......
  • 基于YOLOv10深度学习的交通信号灯检测识别系统【python源码+Pyqt5界面+数据集+训练代
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~......
  • bitset 学习笔记
    bitset有点厉害,必须要学了。介绍bitset可以看成是一个每个位置都是\(0\)或\(1\)的bool数组。与bool数组相比,它的空间复杂度是其\(\frac{1}{32}\),时间复杂度也是\(\frac{1}{32}\),还支持位运算,所以不论是用处还是效率基本薄纱了bool数组。可以作为卡常、压位操作、......
  • 鹏哥C语言自定义笔记重点
    1.浮点数在内存中不能精确保存。2.sizeof这个操作符计算返回的结果是size_t类型的,是无符号整数型的,当遇见负数会被认为是非常大的数。3.strcpy在拷贝字符串时,会把源字符串中的\0也拷贝过去。assert是断言,可以防止NULL,需要头文件#include<assert.h>。const修饰指针变量放在*......
  • 小白学习微信小程序的跨页面通信和数据传递
    跨页面通信和数据传递在微信小程序开发中非常重要,它们可以帮助不同页面之间共享数据并实现页面间的交互。本文将详细介绍微信小程序中的跨页面通信和数据传递的相关知识,并提供代码案例进行说明。小程序中跨页面通信的方式主要包括:使用全局变量使用事件总线使用页面栈数据传......