一丶malloc函数
1.对于malloc函数的声明:void*malloc(int size);
首先malloc函数的作用是分配内存,所以从它的声明上看,malloc分配size个字节内存空间。返回的类型是void,但是在c中,可以强制转换为其他的类型的指针。
比如说:
char *str;
str=(char*)malloc(sizeof(char));
而如果按下面这样写就是错的。
char *str;
str=malloc(sizeof(char));
因为malloc返回值的void,无法将void赋值给char,只有通过(char*)来强制转换。
更具体的写法为:
str=(char*)malloc(sizeof(char)*100)
这个就表明你想分配100个char类型的空间。
2.malloc的注意事项
(1)malloc函数他只分配内存,但不会对内存进行初始化,其空间中的值是随机的。
(2)使用malloc一定要注意分配内存的大小,比如说:
int *p;
p=(int*)malloc(1);
如果这样的,代码是不会报错的,但是这个时候你只分配了1个字节给p,但是p是int类型,具有4个字节,剩下的3个字节就会向后面分配,这样就占用了别人的空间,结果就导致别人原本的值就消失了。
(3)malloc是手动申请内存,我们在结束程序的时候也要手动将这些内存释放出去。这个时候我们就需要用到free函数了。
3.free函数
(1)对free函数的声明:void free(指针变量)
(2)我们使用free前需要包含头文件#include<stdlib.h>//如果你不使用free函数释放内存,则不用包含这个头文件,因为malloc可以直接在stdio.h的头文件的使用//
(3)使用的格式也比较简单
int *p=(int*)malloc(sizeof(int)*100);
free(p);
4.如果使用malloc函数而不使用free函数释放,那么malloc分配的内存则会存在计算机中,但是如果我们程序不运行时,系统也会自动释放这些内存,但是出于习惯,还是用free释放好一点。
二丶函数gets和puts
1.gets
gets的作用是从键盘中读入一个字符串。一般为gets(数组名),这样就将键盘输入的字符串给指定的数组。它与scanf的作用相似但不相同,因为在scanf中你输入一个空格字符串是,scanf会认为你已经输入结束,但是在gets会输入整个字符串直到回车截至,它仅以回车符作为分隔号。
gets的原型:
char *gets(char *p)
{
.....
.....
return p;
}
2.puts
puts的作用是从屏幕中输出一个字符串。一般为puts(数组名)或者puts(字符串指针),所以它的作用就和printf差不多,区别同上,puts()里面也可以直接写一串字符串。
puts的原型:
int puts(const char*str)
下面就用一个具体的代码演示:
#include<stdio.h>
int main()
{
char str[100];
gets(str);
puts(str);
puts("welcome to C language!");
return 0;
}
最后我们在使用puts和gets的时候,最好将文件改为c文件,因为cpp中没有引入gets。