【考研C语言】——群英荟萃

邂逅C

    c的特色是指针和结构体,没有看书就做了几个题,发现哇塞跟我想的都不一样。原来c就是这个样子的啊~,挺有意思的,尤其是指针,提高了运算速度,简化代码!

逐步了解

基本语法的理解

已知:float x, *y=&a; D: printf("%f",y)是错误的;
A:scanf("%f",&x)      B: scanf("%f",y)
C: printf("%f",x)       D: printf("%f",y)

Why??
scanf(“%f”,&x) 前者%x指输入的类型,后者必须是一个地址;
printf(“%f”,x) 前者表示输出的类型,后者表示输出的值,不能是地址,故D不对。

加加问题是传值还是传引用

    两个有趣的问题,同样的知识点,问什么答案不同?

1. int x = 3, y=0, 执行语句 x=!x&&x<++y后,x,y的值正确的是 A
   A: x=0, y=0        B: x=3,y=0
   C: x=0,y=1         D: x=3,y=1

2.x=1, 则表达式的值“++x+x++”为  C
A: 2   B:3     C:4     D:6

第一题中y++后已是1,可y的值还是0,根本就没变;
第二题中 ++X为2,那x++是1还是2?,x++是先运算后加加,答案是4,所以x++的起始值是2;
为什么第一题中Y++后没有改变y值,而第二题中x++后,X就变了呢?为什么?
经过我合理的揣测,真相只有一个:x++,++x是传值,不是传引用。程序运行过程中,x的值是累计的,程序结束后x的值不变。x=x0; 执行一个程序,期间x=x1, 之后再用到x, x的值是x1; 但是程序结束后x的值还是x0。

*p++和(*p)++的区别

这里写图片描述
    定义的时候*p表示定义了一个指针变量p;
    在运算的时候,p表示地址,而*p表示地址上的值;

    * 和 ++是同优先级的,而且都是从右向左结合的。
    p++,先算p++,就是现在p的地址加了1,p=a+1,p之前指向a的首地址,现在地址加了1;然后算,因为p++是先运算后加加,所以*p取得值是a[0]的值;
    (*q)++, 先算括号里的,*q=a[0],然后让a[0]+1,p指向的地址没有变即还是a的首地址。

运算符

用十进制表示,表达式0x12&12的值为  A
A:0    B:24     C:1     D:6

    其中0x表示16进制, & 表示按位与。
    &(按位与): (0,0),(0,1)(1,0)=0; (1,1)=1
    即都是真才是真,通俗点:与嘛,你有我有全都有

    ^(异或): (1,0),(0,1)=1; (0,0),(1,1)=0
    即异的才是真的,通俗讲就是:充分发扬不求最好,但求另类的精神

C 中幂运算怎么表示

    a的3次方,两种方法:
    1. a*a*a (不能用^,^被异或拐跑了)
    2. pow(a,3)表示a的3次方,但需要引入math.h头文件

指针数组傻傻分不清楚

1.int(*p)[4]————指向数组的指针,数组的首地址,该数组包含4个整型数据。
2.int*p[4]————指针数组,有4个整型数据的指针组成。

fopen认识只读,只写,读写

fopen函数调用格式:fopen("文件名","使用文件方式")
r: 以只读方式打开文件,该文件必须存在;
r+: 以可读写方式打开文件,该文件必须存在;
rb+: 读写打开一个二进制文件,该文件必须存在;
-------------------------------------------------------------------

w: 打开只写文件,若文件存在则文件长度清为0,即文件内容会消失。若文件不存在则建立该文件;
w+: 打开可读写文件,若文件存在则文件长度清为0,即文件内容会消失。若文件不存在则建立该文件;
wb: 只写打开或新建一个二进制文件,只允许写数据;
wb+: 读写打开或建立一个二进制文件,允许读写;
-------------------------------------------------------------------

a: 以附加的方式打开只写文件。若文件不错在,则会建立该文件,若存在,写入的数据会被加到文件尾,即文件原来的内容会被保留。
a+: 以附加方式打开可读写文件。若文件不错在,则会建立该文件,若存在,写入的数据会被加到文件尾,即文件原来的内容会被保留。
ab+: 读写打开一个二进制文件,允许读或在文件末尾追加数据。

欲为好朋友

    以上是对c一个初步的浅显的认识,许多细碎的点,还是要回归课本,了解一些原理。考研的程序设计题真的是,不准备肯定不行,所以乖乖练习吧。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值