C语言第十二天知识点总结:
1.fgets函数使用的使用:
该函数是一个文件操作函数 格式为:fgets (函数名,数组长度,文件指针(stdin));
作用:从输入缓冲区中读取一个字符串保存到一个字符数组中。
fputs(数组名,stdout); fputs函数书不会自动换行的,也不能进行格式化的输出 ,而 puts函数可以自动换行。
2. const 关键字:
(1)指针变量P的指向可以改变,但是指向的变量值不可以 改变。
此时的格式为: const int *p=&a; *p=&b; *p=1000; 值不可变,此处值修改错误。
int * const=&a; *p=&b; *p=1000; 地址不可变,修改地址会出错const 修饰的地方: 1 修饰常量 2. 修饰指针变量 3. 修饰数组
3. (1)BSS段:通常是指用来存放程序中为初始化的全局变量和静态变量。
(2)数据段:通常是指用来存放程序中已初始化
(3)代码段 程序执行代码的一块内存内存区域;
(4) 堆: 进程运行中被动态分配的内存段;
(5) 栈: 用户存放程序临时创建的局部变量;
4 C语言中的内存动态分配函数:
(1)malloc函数: 格式: void *malloc(unsigned size)
从内存的堆区分配大小为size个字节的连续的内存空间,如果申请成功,返回收地址,否则,返回NULL。
memset(指针指向的空间,放入的值,设定空间的大小);主要作用是给一块空间付值。
(2)calloc函数: 格式为(块数,长度)分配内存空间
如:int *p=(int *)calloc(4,sizeof(int)); 分配了4块内存长度为4个单元的内存空间。
(3)realloc 函数可以给已经存在的空间扩充大小
格式为: P=realloc(P,40*sizeof(int ); 返回值可能是新地址,此函数有返回值。
5. 指针函数: 存放函数的首地址指针的指针变量( 返回值为指针的函数)就是指针函数。
格式为: 类型说明符 *函数名(形参表){函数体 return 函数的首地址}
6. 函数指针:我们把指向函数首地址的指针变量称为“函数指针”。
格式为: 返回值类型 (*变量名)(函数的参数);定义如下:
/* 函数指针变量
存放函数的首地址的指针变量就是函数指针变量
函数指针变量的定义
返回值类型 (*变量名)(函数的参数);
函数的声明:
int sum(int a,int b);----> 函数指针 int (*p1)(int a,int b);
//定义了一个函数指针 p1
//p1可以存放 返回值是int类型,并且有两个形参,形参的类型还都是int类型的函数的地址
//函数指针的初始化
p1 = sum; //sum存的就是函数在内存中的首地址 */
注意事项: (1)函数指针变量不能进行算数运算,这是与数组指针变量不同的,数组指针变量加减一个整数可以是指针移向指针后面,而函数指针的移动是毫无意义的。
(2)函数调用中,(*指针变量名)的两边扩考不能省略,其中的*不应该理解为求值运算,在此处他只是一种表示符号。
7. C语言的构造类型有: 1 数组类型 2.结构体类型 3. 共用体类型
结构体:格式: struct 结构名{成员列表};