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阶段遗漏一

1,转义字符的作用。 2,关于逗号运算符的使用规则。 3,数组指针 4,类指针...
  • LingXi__Y
  • LingXi__Y
  • 2016年08月26日 19:35
  • 113

MySQL两阶段提交

1 二阶段提交协议 一般分为协调器C和若干事务执行者Si两种角色: 当执行某一事务T的所有站点Si都通知C事务执行完成,C即启动二阶段提交协议。 1.首先C向所有Si发消息(C...
  • JesseYoung
  • JesseYoung
  • 2014年07月19日 22:24
  • 7363

二阶段提交和三阶段提交算法的理解

一、二阶段提交算法的描述: 二阶段提交算法的成立基于以下假设: 该分布式系统中,存在一个节点作为协调者(Coordinator),其他节点作为参与者(Cohorts)。且节点之间可以进...
  • lxpblsc
  • lxpblsc
  • 2015年03月29日 11:48
  • 2167

最优化两阶段法

有大神会MATLAB吗
  • qq_40893629
  • qq_40893629
  • 2018年01月03日 19:38
  • 34

分布式事务之二阶段提交

分布式事务之二阶段提交
  • caicongyang
  • caicongyang
  • 2017年03月11日 15:56
  • 347

JAVA高级软件架构师实战培训阶段二

第01节课:整体课程概览 -----------------------以下为分布式架构和部署部分------------------------------------------------...
  • jimei1912
  • jimei1912
  • 2017年03月06日 14:22
  • 1417

Java视频篇第二阶段-JavaWeb阶段

1、周期与目标: 学习周期:33天 学完后目标:可以仿制任何网站前端页面,解决网页浏览器兼容性问题,解决PC端和移动端兼容性问题;使用前端脚本进行相关网页功能特效编写,使用JavaWeb核...
  • Alvenhao
  • Alvenhao
  • 2017年07月11日 15:26
  • 574

分布式事务-二阶段提交与三阶段提交

在分布式系统中,事务往往包含有多个参与者的活动,单个参与者上的活动是能够保证原子性的,而多个参与者之间原子性的保证则需要通过两阶段提交来实现,两阶段提交是分布式事务实现的关键。...
  • whycold
  • whycold
  • 2015年08月16日 14:19
  • 16084

分布式事务处理两阶段提交实例2及注意

引言:  Spring 通过AOP技术可以让我们在脱离EJB的情况下享受声明式事务的丰盛大餐。  通过配合使用ObjectWeb的JOTM开源项目,在不需要Java EE应用服务器的情况下,Sprin...
  • y666666y
  • y666666y
  • 2017年04月17日 16:04
  • 908

在 MongoDB 中执行两阶段提交

简介本篇文档提供了一个通过使用两阶段提交将数据写入多个文档的方法来处理多文档更新或“多文档事务”。此外,你可以扩展实现类似数据回滚的功能。背景在MongoDB中,操作单个文档(document)是原子...
  • conansix
  • conansix
  • 2015年12月04日 18:00
  • 2788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C阶段遗漏二
举报原因:
原因补充:

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