part3

作用域:内层块会隐藏外层块的定义。但是离开内层块后,外层块的变量的作用域又回到原来的作用域。在内层块定义前,变量地址使用的是外层的地址,内层同名变量定义后则使用新定义的变量地址。

*用vs2015写c:新建空项目,将cpp文件改为c文件,vs2015会自动按照c的编译规则编译;

在块内使用static声明变量要注意,变量的地址不会被释放,而且每次调用都会使用上一次的值;不能在函数的形参中使用
static:int function(static int);//是错误的

链接:C变量有3种链接属性:外部链接、内部链接和无链接。具有块作用域、函数作用域或者函数原型作用域的变量都是无链接变量。则意味着这些变量属于定义它们的块、函数或者原型私有。具有文件作用域的变量可以是外部链接或者内部链接。外部链接变量可以在多个文件程序中使用,内部链接变量只能在一个翻译单元中使用。

malloc()分配内存返回动态分配内存块的首地址,可用于返回指向数组的指针、指向结构的指针,通常该函数的返回值会被强制转换为匹配的类型。

free()的参数是一个指针,指向有malloc()分配的一块内存;不能用该函数释放其他方式分配的内存如数组;有些系统在程序结束的时候不会释放malloc()开辟的内存,所以尽可能使用free()释放内存;malloc()和free()函数原型都包含在stdlib.h中。

I/O函数
getchar()和putchar()是直接从标准输入输出字符,并且是单个字符读取;
gets()和puts()从标准输入输出读取字符,其中gets()是整行读取直至到换行符,然后丢弃换行符而储存其余字符,并在字符的末尾添加一个空字符使其成为一个C字符串;
getc()和putc()要告诉这两个函数使用的是哪一个文件,每次只处理一个字符,如 ch=getc(fp);putc(ch,fpout)。没有结束标志,可以使用EOF返回值作为文件结尾;
fopen()用于打开文件,声明在stdio.h中。
fclose()函数关闭fp指定的文件,必要时刷新缓冲区,对于较为正式的程序,应该检查时候关闭成功;
fprint()和printf()用于输出;fprintf()第一个参数必须是文件指针。
rewind()参数是文件指针,无返回值的函数;用于使得程序回到文件开始的地方;
fscanf()与scanf()类似;
fgets()的第一个参数表示储存输入位置的地址(char *类型);第二个参数是一个整数,表示输入字符的大小;最后一个参数是文件指针,指定带读取的文件;该函数每次读取到换行符为止,并储存换行符,在开始读之前,先会抹掉原来储存为止的内容;
fputs()第一个参数是储存字符的地址,第二个是输出的文件指针;
fseek()第一个参数是文件指针;第二个参数是偏移量,该参数必须是long类型的值;第三个参数是模式。如果一切正常,其返回值为0,反之为-1;
ftell()参数为文件指针,返回值为文件的字节数;
由于stdio.h系列的所有输入函数都使用相同的缓冲区,所以调用任何一个函数都将从上一次函数停止调用的位置开始。

猜你喜欢

转载自blog.csdn.net/weixin_41854971/article/details/80234328
今日推荐