c语言的存储方式
动态存储方式和静态存储方式(按存储时间分配的)
static声明是静态的,其他是动态的
int f1(int a)
{
static int b = 0;
return (a+b);
}
int f2(int a)
{
int b = 0;;
return (a+b);
}
int main()
{
printf("%d",f1(0));//0
printf("%d",f1(0));//1
printf("%d",f2(0));//0
printf("%d",f2(0));//0
return 0;
}
B. 在C语言中文件的存取方式是什么
在C语言中,打开文件可以指定文件的存取方式。打开用函数fopen。
其原型为:FILE * fopen(const char * path,const char * mode);
需要包含头文件stdio.h。
当打开成功时会返回FILE *指针,用于后续文件的读写关闭等操作。参数path为文件的路径及文件名。mode即存取方式,包括:
1、r 以只读方式打开文件,该文件必须存在。
2、r+ 以可读写方式打开文件,该文件必须存在。
3、rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
4、w打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
5、w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
6、a以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
7、a+以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
8、wb只写打开或新建一个二进制文件;只允许写数据。
9、wb+读写打开或建立一个二进制文件,允许读和写。
10、ab+读写打开一个二进制文件,允许读或在文件末追加数据。
C. 在C语言中,文件按存储形式划分可分为-----和-----
在C语言中文件按存储形式可划分为文本文件和二进制文件,文本文件又称纯文本文件。
文本文件是一种计算机文件,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。文本文件是指以ASCII码方式(也称文本方式)存储的文件,更轿好确切地说,英文、数字等字符存储的是ASCII码,而汉字存储的是机内码。文本文件中除了存储文件有效字符信息(包括能用ASCII码字符表示的回车、换行等信息)外,不能存储其他任何信息。二进制文件是指包含在ASCII及扩展ASCII字符中编写的数据或程序指令的文件,广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。狭义的二进制文件即除文本文件以外的文件。文本文件是一种由很多行闭李铅字符构成的计算机文件。文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。文本文件的编码基于字符定扰吵长,译码相对要容易一些;二进制文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。D. C语言的基本类型在内存中怎么储存的
1、整型数据:所有整数(正负零)在内存中都是以补码的形式存在。对于一个正整数来说,它的补码就是它的原码本身。对于一个负整数来说,它的补码为原码取反再加1。
2、字符型数据:把字符的相对应的ASCII码(整数,映射关系见ASCII码表)放到存储码单元中,而这些ASCII代码值在计算机中同样以二进制补码的形式存放的。
3、实型数据:也叫浮点数,在计算机中也是以二进制的方式存储,关键在于如何将十进制的小数转化为二进制来表示。
(4)c语言的存储方式扩展阅读
C语言存储数据使用注意事项
C语言中(包括C++/Java)实际存储浮点数都不是这样直接存储“整数二进制+小数二进制”就完事的,这只是第一步。转化二进制以后还要进行处理,实际的存储标准是IEEE754
遇见一直“乘不净”的浮点数,最终能取多少位取决于编译器对应的浮点类型数据的分配字节,字节数越多越精确。故double要比float精确不仅仅是整数部分上限更高,小数部分也能取到更低的位数,故而更精确。
尽量避免大的浮点数和小浮点数运算,由于浮点数存储的特点,常常会使小的浮点数丢失且判断两个浮点数或一个浮点数和整数,常量是否相等,使用abs(x-y)<0.000001这种形式。
E. c语言如何用文件存储数据
具体操作步骤如下:
1、首先,创建一个新文件夹,在该文件夹中创建一个文档,如下图所示,然后进入下一步。
F. C语言中有哪些存储类型
c语言中的存储类型有auto, extern, register, static 这四种,存储类型说明了该变量要在进程的哪一个段中分配内存空间,可以为变量分配内存存储空间的有数据区、BBS区、栈区、堆区。
1. auto存储类型
auto只能用来标识局部变量的存储类型,对于局部变量,auto是默认的存储类型,不需要显示的指定。因此,auto标识的变量存储在栈区中。
2. extern存储类型
extern用来声明在当前文件中引用在当前项目中的其它文件中定义的全局变量。如果全局变量未被初始化,那么将被存在BBS区中,且在编译时,自动将其值赋值为0,如果已经被初始化,那么就被存在数据区中。全局变量,不管是否被初始化,其生命周期都是整个程序运行过程中,为了节省内存空间,在当前文件中使用extern来声明其它文件中定义的全局变量时,就不会再为其分配内存空间。
3. register存储类型
声明为register的变量在由内存调入到CPU寄存器后,则常驻在CPU的寄存器中,因此访问register变量将在很大程度上提高效率,因为省去了变量由内存调入到寄存器过程中的好几个指令周期。
4. static存储类型
被声明为静态类型的变量,无论是全局的还是局部的,都存储在数据区中,其生命周期为整个程序,如果是静态局部变量,其作用域为一对{}内,如果是静态全局变量,其作用域为当前文件。静态变量如果没有被初始化,则自动初始化为0。静态变量只能够初始化一次。