实验楼 C - 1.C语言笔记

因为数据结构和算法的基础都是C,所以回顾一下C

 

strcat

strcat(str1,str2)后内容放在str1,所以str1数组大小要足够大

gets

会自动补上\0

子函数修改主函数参数

形参会被释放,要达到目的要在子函数中引入指针(所以指针别乱用)

数组名是常量

当int a[10];之后,a是可以代表地址,但a是const

数组名做变量时是当成指针

所以此时形参会改变实参,即fun(int arr[],int n)会当成fun(int *arr,int n)

for小研究

for(i=0;i

所以才有for(i=0;*(a+i)!='\0';i++);之后直接接*(a+i)='\0';

冒泡+命令行参数

实验楼 C - 1.C语言笔记_第1张图片

同一个框内划线的部分(i&argc&atoi&argv,-1&+1)都是相互对应的

File Operation

实验楼 C - 1.C语言笔记_第2张图片

注释是重点,同时换行的ascii是10,所以putchar(10)就是输出回车

结构体的点运算和箭头运算

https://www.jianshu.com/p/6f849296f47e

指向结构体变量的地址->结构成员   结构体变量.结构成员

函数也可以作为形参

因为指令是是有地址,而形参可以接受地址

Status TraverseList(const SqList L, void (*visit)(Elemtype))
{
    int i;
    for(i = 0; i < L.length; i++)
    {
        visit(L.elem[i]);
    }
    return OK;
}

初始化存储空间和销毁空间

element是指针变量

初始化: L->element=(int *)malloc(INITIAL_SIZE*sizeof(int))

销毁空间: free(L->element)

结构体位域

解决内存紧张: https://zhuanlan.zhihu.com/p/52652176

结构体定义

https://zhuanlan.zhihu.com/p/66243969

反复看第一段和第三段代码段
 

typedef struct struct1

{
    //
}*strPoi;//有此定义,struct1* p就可以写成strPoi p

 

压栈

当栈满时再压栈需要重新为其分配内存(address)(用自动分配realloc)

 

 

 

 

 

 

你可能感兴趣的:(算法&数据结构)