学习心得------C语言复杂数据类型

---恢复内容开始---

在学习c语言的过程中,最复杂的知识便是标题中的复杂数据类型了,因为包括了数组,字符串,指针等多种数据类型,在这一环节中,我们不免要接触到内存,分析出该数据类型的在内存中的存储方法,就可以比较明确的认识到该类型的运行原理,下面就分析一下我在学习该视频中的学习心得吧。

一、数组


1.数组,从字面上看,就是一组数据的意思,是的,数组的作用就是用来存储一组数据的。数组的特点是只能存放同一类型的数据,比如int 比如double。

2.数组的格式,元素类型 数组名[元素个数]  比如 int age[3];

3.数组的简单使用,数组的初始化为:int age[3]={0,1,2}; 值得注意的是,数组的下标是从0开始而不是1,所以数组的最后一个元素的下标永远是数组元素-1。

 1 #include<studio.h>
 2 int main()
 3 {
 4         int age[3]={1,2,3};
 5        int age[3]={1,2};// 可以只赋值前面部分元素
 6        int age[]={1,2,3};//可以不写清元素个数,系统自动根据元素个数定义
 7       int age[3]={[1]=1,[2]=2};  //这是直接给第2和3个元素赋值
 8  //这几种都是正确写法
 9
10    /*常见错误
11         int a[];
12        int[3] a;
13         int a[b];
14       a = {10, 11};
15       a[3] = {10,9,8,};
16
17
18 */
19           return 0;
20 }

4.(1)数组的内存分析,数组分配的空间大小是根据数据类型所占据的字节数*元素个数来决定的。

(2)存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

(3)数组名就是数组的地址

(4)如果计算数组元素的个数:可以用sizeof(数组名)/sizeof(数组元素的数据类型)即可得到元素个数

5数组作为函数传递时,因为是地址的传递,所以与以前的基本数据类型的值传递有很大区别,我们可以通过下面的代码来认识一下。

 1 void change(int array[])
 2 {
 3     printf("array==%p\n",array);  //输出数组的地址不用&,数组名就代表数组的地址
 4     array[0]=100;
 5 }
 6
 7 void change2(int n)
 8 {
 9     n= 100;
10 }
11
12 int main
13 {
14       int age[5]={1,2,3,4,5};
15      int a=10;
16      change(age);
17      change2(a);
18     printf("age[0]==d%",age[0]);//此处输出100,因为数组的传递是地址传递,函数内更改的数据值相当于更改了该地址的数据值
19     printf("a==d%",a);//此处输出为10,基本数据类型的数据传递村纯粹是值传递。
20
21         return 0;
22 }

下面是一个关于数组的综合练习例子,设计一个函数,找出整型数组的最小值

// 设计一个函数,找出整型数组元素的最小值
#include <stdio.h>
/*
 * 定义函数需要两个参数,一个是数组,一个是数组长度
 */
int minOfArray (int array[], int length)
{
    // 定义一个变量存储最小值(默认是首元素)
    int min = array[0];
    // 遍历所有元素,找出最小值
    for(int i = 1; i<length; i++)
    {
        if(array[i] < min) // 判断当前元素是否小于min
        {
            min = array[i];// 如果当前元素小于min,就用当前元素覆盖min。
        }
    }
    // 返回最小值
    return min;
}
int main()
{
    // 整型的数组
    int ages[] = {43, 12, 103, 69, 76, 25, 16};
    int len = sizeof(ages)/sizeof(int); // 计算数组长度
    int min = minOfArray(ages, len);// 调用minOfArray函数
    printf("最小值是:%d\n", min); // 输出最小值
    return 0;
}

---恢复内容结束---

时间: 2024-10-26 16:38:20

学习心得------C语言复杂数据类型的相关文章

黑马程序员学习心得------C语言复杂数据类型之指针

众所周知,指针是C语言中最重要也是最难的一种数据类型,这是C语言中与其他类似于Java等语言不同的直接操纵内存的一种数据.也有人如此形容指针的重要性“如果你C语言中除了指针都学得很好,信手拈来,唯独不会指针,那么你就是没学过C语言!”.下面来回忆一下这段时间学习指针的心得. 1 定义的格式: 指向内容的数据类型  *指针变量名 例如: int  *p; 2 指针的赋值问题 int a=10; int *p=&a;//指针p指向的a的地址值 int *p; p=&a  //这两种赋值都可以.

我的MYSQL学习心得(二) 数据类型宽度

显示宽度 MYSQL中的整数型数据类型都可以指定显示宽度,而SQLSERVER不行 创建一个表 CREATE TABLE tb_emp( id BIGINT(1)) id字段的数据类型为BIGINT(1),注意到后面的数字1,这表示的是该数据类型指定的显示宽度,指定能够显示的数值中数字的个数. 例如,假设声明一个INT类型的字段 YEAR INT(4) 该声明指明,在year字段中的数据一般只显示4位数字的宽度. 在SQLSERVER里是会报错的 CREATE TABLE abc (id INT

我的MYSQL学习心得(四) 数据类型

MYSQL里的BLOB数据类型 BLOB是一个二进制大对象,用来存储可变数量的数据.BLOB类型分为4种:TinyBlob.Blob.MediumBlob.LongBlob, 这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型     类型 大小(单位:字节) TinyBlob                            最大 255Blob                                  最大 65KMediumBlob      

我的MYSQL学习心得(十) 自定义存储过程和函数

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习

我的MYSQL学习心得(十四) 备份和恢复

原文:我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(十四) 备份和恢复 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程

我的MYSQL学习心得

我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(十二) 触发器 我的MY

MYSQL学习心得

转载:http://www.cnblogs.com/lyhabc/p/3691555.html 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过

我的MYSQL学习心得(十五) 日志

原文:我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的

我的MYSQL学习心得(十七) 复制

原文:我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(十七) 复制 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(十) 自定义存储过程和函数 我的