C语言  数组(笔记)

时间:2021-11-14 05:55:30

数组

数组本身一种数据结构,储存数据。 int a[] ;char a[]; double a[].

结构体类型

struct point{  //struct point 数据类型名

int x;

int y;

}

char *strs[] 字符指针数组

数组初始化的过程是数组创建的同时并赋值的过程。

int a;//声明

a=10;//赋值

int a=10;//初始化

char a[]="hello\0"   字符串

结构体

struct student {

 int age;

char name;

double height;

char*tel;

}

struct student st= {"18","zs","180.5","18655453421"}  //赋值

struct student //以下五行创建结构体数据类型

    int age;

    char *name;

    double height;

    char *phone;

};

int main(int argc, const char argv[])

{


    @autoreleasepool {

struct student st={18,"zhangs",180.5,"010-888888"};

        st.age=st.age+1;     //年龄的改变,相当于整型变量的应用

    printf("学生年龄=%d,学生姓名=%s,学生身高:%lf,学生电话:%s",st.age,st.name,st.height,st.phone);     //注意"."语法,相当于“的”。结构体必须用点(“.”)语法

    }

    return 0;

}

结构体注意点语法!


使用时先定义类型;再赋值;引用打印数据。


结构体数组:

内存的开辟:malloc (size)

系统申请一块内存,这块内存的大小由参数决定,而参数的单位为字节。申请成功后函数返回内存块起始地址,失败返回NULL 

calloc(n,size)

第一个参数为分配的单元个数,第二个参数为指定单元大小。如果分配不成功也会返回空指针(NULL)。所申请区域内的数值初始化为0

free  

用于释放所申请内存块,传入参数为起始地址指针


例子

     struct student st2;

        printf("请输入学生年龄:\n");

        scanf("%d",&st2.age);

        printf("请输入学生姓名:\n");

        //函数malloc动态开辟内存的空间

        //形参 说明开辟空间的大小

        //返回值 是开辟空间的首地址

        //返回值类型(void*) 表示任意指针类型 注意强制类型转化

        st2.name=(char*)malloc(sizeof(char)*20);//void*代表任意类型指针  sizeof(char)为1个字节,共20个字节

        //st2.name=(char*)calloc(20, sizeof(char));//calloc 中20为分配的单元个数,第二参数为指定单元大小

        scanf("%s",st2.name);

        printf("请输入学生身高:\n");

        scanf("%lf",&st2.height);

        printf("请输入学生电话:\n");

        st2.phone=(char*)malloc(sizeof(char)*20);//电话号码也开辟20个空间

        scanf("%s",st2.phone);

        printf("学生年龄=%d,学生姓名=%s,学生身高:%lf,学生电话:%s",st2.age,st2.name,st2.height,st2.phone);

        free(st2.name);//回收内存空间

        free(st2.phone);//回收内存空间


全局数组和静态数组: 关乎到数据变量的生命周期

int max1(int a,int b){   int max;

if(a>b){ max=a;}  

else{ max=b;}

return max;  

此时,max的生命周期出不了大括号,属于局部变量

1、全局变量不依附于大括号,在程序代码中是一直有效的,除非相关程序结束。 应用前提:好几种不同方法都要用到的变量,那么我们把它声明为全局变量。

2、静态变量 static  意味着该变量只能被创建一次,以后不可能被创建   一次创建,永远有效

栈区、堆区、全局区


二分查找算法?冒泡排序算法?


strcpy; strcat; strlen; strcmp