学习杂记(二)c语言

来源:互联网 发布:java 排列组合算法 编辑:程序博客网 时间:2024/05/13 06:56

函数的嵌套调用:在执行被调用函数时,被调用函数又调用其他函数。

函数的递归调用:一个函数在函数体内直接或间接调用自己

递归函数:

1,终止条件 

2,递归过程是收敛的 

3,收敛是有步长的,用分支语句来区分终止条件和递归过程

分函数设计:

1,一个函数只能做一个操作

2,预测、预计将可扩展的功能,把他作为变化部分

3,对于变化部分,用函数参数进行编程;对于不变的部分,用函数题编程

指针变量:这个变量的内容/数据是另一个变量的地址

*符号的含义:

1,int*:*符号前有类型,*会跟前面的类型结合,表达一个指针烦人类型

2,*pi:*符号前无类型,后边跟一个变量,表达对变量的解引用

解引用*p:指针前面加*表示指针指向内存单元中的内容;指针变量的值的改变,不会引起他原来指向的变量的值发生改变。

指针变量时32/64位(4/8字节)。任何类型的指针变量都是4/8字节(与地址总线的宽度相同

指针可以作为函数的参数:调用函数时,传递的是参数值的复制拷贝


函数的入参和出参

出参:一定是一个指针,一定无CONST修饰(const修饰的变量表示:指针指向的内存空间不可被改写)

入参:基本类型或是指针

const int  *pi和int const *pi:指针指向的内存空间不可被改写

int *const pi:指针本身不可被改写

函数的地址:一个函数在编译时会分配一个入口地址,这个函数的入口地址既为函数的地址,也叫作函数的指针

函数指针的格式: type (*function)(type param,type param)

注意区别type *function (type param)-----返回值为指针的函数


malloc 和free:分配和释放一个动态内存,在#include<stdlib.h>中

malloc :返回一个分配好的内存首地址,错误返回空

注意:malloc与free要配对使用


程序:动态开辟输入空间

char *input_old(){char *pstr = NULL;
int i = 0;
int len = 1;
char ch;
pstr = (char *)malloc(sizeof(char));
memset(pstr,0,len);
while(1)
{
scanf("%c",&ch);
if(ch != '\n')
{
pstr = (char *)realloc(pstr,len+1);
pstr[i] = ch;
i++;
len++;
}
else
{
break;
}
}
pstr[i] = '\0';
return pstr;
}







0 0
原创粉丝点击