C阶段遗漏二

原创 2016年08月29日 17:58:15

“慈母手中线,游子身上衣。临行密密缝,意恐迟迟归。”
其实这首诗放在这里是不太合适的,我其实只是想表达目前紧张的现状。我就是那个游子,只是出门前的破衣服得由我自己来缝。这件破衣服指的是我过去所学。之所以这么说,并不是因为没好好学,只是学的越多,越觉得不够,就越想学。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1,C语言可以处理的文件类型有:文本文件,二进制文件

一般来说,人类可读的文件都作为文本文件,例如一片文章。其余都作为二进制文件,例如一个程序。
在C语言中,文件的操作是通过FILE结构体进行了,利用fopen返回一个指向FILE结构体的指针,在使用fopen函数过程中,使用mode控制符对是否打开哪类文件进行控制:
FILE *fopen( const char *filename, const char *mode );
filename:文件名,mode:打开的模式,规定了是可读、可写、追加之类的属性。
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
如果调用失败,返回一个空指针。

2,C语言程序的三种基本结构是:顺序结构,选择结构,循环结构。

3,int k = 20;为什么while(k = 1){};是死循环?

首先看这个例子:
int x, y, k;
k = (x=1,y=2);   //前面有讲过,逗号表达式的值为最后一个表达式的值。
printf("k = %d",k);    //打印结果是k = 2,所以表达式 y=2的值就是2。
所以,题目中while后面括号里面的表达式是赋值,赋值以后整个表达式的值就是1,while(1)才是真身。

4,int n = 5,a[n] = {1,2,3,4,5};这样是不可以的,但是:

    int i,a[5] = {1,2,3,4,5};
    for(i = 0;i<5;i++)
    {
        printf("a[%d] = %d",i,a[i])
    }
    //这样是可以的。

5,若有定义:int a[3][4],

  则 (*(a+1)[1])等同于: *(a + 1 + 1) = *(a+2) = a[2][0];
  而*(*a[1]+1)等同于*(*(a+1)+1) = a[1][1];

6,static的作用:

1)隐藏:如果定义变量是,前面加了static那么该变量的使用范文仅限于当前文件,不可以再其他文件中使用。如果强行重复定义会出现重载错误。
2)保持变量内容的持久:存储在静态数据区的变 量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的,举个例子:

#include <stdio.h>   
int fun(void)
{      
    static int count = 10;// 事实上此赋值语句从来没有执行过 
    return count--;    
}
int count = 1;

int main(void) 
{          
    printf("global\t\tlocal static\n");     
    for(; count <= 10; ++count)          
    printf("%d\t\t%d\n", count, fun());               
    return 0; 
}
//打印结果:
1,10
2,9
3,8
4,7
5,6
4,7
3,8
2,9
1,10

3)static的第三个作用是默认初始化为0:
其实全局变量也具备这一属性, 因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。比如初始化一个稀疏矩阵,我们可以一个一个地把所有元素都置0,然后把不是0的几个元素赋值。如果定义成静态的,就省去了一开始置0的操作。再比如要把一个字符数组当字符串来用,但又觉得每次在字符数组末尾加’\0’太麻烦。如果把字符串定义成静态的,就省去了这个麻烦,因为那里本来就是’\0’。不妨做个小实验验证一下:

int a;    
void main()
{   
    int i;      
    static char str[10];       
    printf("integer: %d;  string: (begin)%s(end)", a, str); 
    getchar();
}
//打印结果: 0;  (begin)(end)  (说明,全局的a默认的初始化值为0,而静态定义的字符数组str默认的元素也都是0,对应字符‘\n’,所以打印的时候毛都不显示。) 

最后对static的三条作用做一句话总结。首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0

7,在C语言中,要求运算数必须是整型或字符型的运算符是:求余运算符“%”(老子就是专治拖泥带水的)

8,在C语言中,函数的定义不可以嵌套,但函数的调用可以嵌套。

9,printf(“%-m.nf”,f),m代表输出的数所占的列数,n小数点后的位数,“-”代表左对齐,如果长度小于m,右补空格。

10,printf(“%-m.ns”,str),与上面的区别是,这里的n表示的是只取字符串左端的n个字符。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C初级阶段练习题目(二)

//***********11、有1,2,3,4排成三位数,无重复且互不相同************** int main() {                  int i = 0;     ...
  • asd7486
  • asd7486
  • 2016年05月30日 17:58
  • 98

c学习阶段总结

第一天 一.注释的使用(1.//  2.、/**/ ) 二.进制的转换(常用进制:10进制、2进制、八进制、十六进制 ) 目标进制     口诀 十进制: 按权就和 转化为其他进制:连除倒取余 二...

u-boot-2016.11移植到S3C2440之第一阶段修改(2)

1、u-boot-2016.11的第一个启动的文件为arch\arm\lib\vectors.S,系统上电时,产生复位异常,从vectors.S中的reset跳转到start.S (arch\arm\...

AT91Bootstrap1.16第二阶段C程序详解之一

Main函数的主要流程: 硬件初始化——》从Dataflash中加载uboot——》返回指定的地址JUMP_ADDR  本文主要分析: 硬件初始化hw_init() #include "incl...

软件工程之C/S阶段总结

不知不觉C/S的学习已经接近尾声,回头看看自己这半年多的学习,收获满满的呢 一、每一阶段 1.软件工程及机房收费系统第一遍文档 时间:2014年9月8日-2014年10月1...

S3C6410的Bootloader的两个阶段BL1和BL2编译相关学习

********************************LoongEmbedded********************************作者:LoongEmbedded(kandi)...

u-boot启动的两个阶段 分别对应start.S和board.c

http://blog.chinaunix.net/uid-10696433-id-2935725.html   先分析一下u-boot启动的两个阶段,分别对应start.S和board.c这两个...

翰子昂阶段性测试_S1阶段 ——C 方向理论测试试题A卷

翰子昂阶段性测试_S1阶段 ——C 方向理论测试试题A卷 姓名:                    准考证号:                    身份证号:               ...

u-boot启动过程源码分析之第一阶段(S3C24XX系列)

本文章以u-boot-2008-10为分析对象 1.bootloader两阶段功能  bootloader启动可以分为单阶段,多阶段两种,通常多阶段能提供更复杂的功能以及更好的移植性,这里主要讨论两阶...
  • comwise
  • comwise
  • 2013年06月14日 00:32
  • 899

C++第一阶段总结

C++ 总共分为了数据类型,控制结构,函数,以及面向对像的类和对象和输入输入流五部分内容 在数据类型部分中,讲到了C++的基本数据类型,其中有数值,变量,常量和表达式,但是 这些系统的数据...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C阶段遗漏二
举报原因:
原因补充:

(最多只允许输入30个字)