C语言学习

学习软件

1,线上编译(重点在了解语法,不在编写程序)

2,本地软件(适合初学者,不大,就几十兆)
Dev C++5.11百度云下载链接
提取码:8783
注:安装步骤直接next就可以。其中,安装时选择语言为English,安装完后选择工具语言可为简体中文。

Error

1,对于C而言,提示的错误并不一定就在本行。

line3少了一个分号,错误显示在line4line3少了一个分号,错误显示在line4.将分号换行写在第三行和第四行代码之间,就不会报错。

Difference

1,0和o区别

:因为早期电文报为了区分0和o,将0写成
0的写法
在C语言中的0延续了电文报中的写法(右侧)。

2,void main()和int main()区别:

①void不需要返回值(return),而后者一定要有返回值(return 0为正常结束,否则为异常)。
②使用void main()虽然程序可以编译运行,但却不利于操作系统判断其状态。
注:有些编译器里漏写了renturn 0,根据C99标准会自动在.exe文件中添加。

3,跳转语句的区别:

break:跳出就近一层循环(接力break:标号+if)
continue:结束本次循环,忽略后面的代码
return:void时无需返回值,通常用于函数末尾
goto:无条件跳出循环

goto 标号(out);
...
标号(out):要执行的句子(return 0);

Knowledge

1,标准的C语言格式:
int main(int argc,char *argv[])
{
     return 0;
}
/*初学者:*/
int main(){
     return 0;
}

其中,argc:argument count,记录了用户在运行程序的命令行中输入参数个数;
argv:argument variant,指向的数组中至少有一个字符指针,即arg[0]。它通常指向程序中的可执行文件的文件名。
一般都会使用printf(),所以需要调用库函数 <stdio.h>

2,int main()和#include<stdio.h>不能写在同一行

,否则会报错:
int main()和#include同行错误

3将英文字符误输入成中文字符

,会报错:
中英文输入错误

4,一个程序本次启动可以,下次就报错了:

数组越界(segmentation fault);指针出错。

Rule

1,变量:

保存数据的地方。
①定义:<类型变量><变量名称>(多个名称用“,”隔开;只能由字母、数字、下划线组成,且数字不在第一位,关键字不用做标识符)。可以在代码任何地方定义变量(C99)。
②赋值:变量=想赋的值。
③初始化:<类型变量><变量名称>=<初始值>(不初始化,会将变量现有地址里所原本具有的值赋给变量)。
所有变量一旦被定义类型,是不能改变的。常量:

2,常量:

固定不变的数。方便理解“莫名其妙”的数字。
const:此变量的值一旦被初始化,就不能再更改。

3,运算符优先级:

举例:①printf("%d", k>i<j);(先算k>i,再看<j)
②(这里保留小数点后一位)
printf("%d\n",10/3.03); →10.0
printf("%d\n",10/3
3.0); →9.0

4,复合赋值:

a+=4即a=a+4。

5,递增递减运算符:

单目运算符,算子必须是变量。
①a++(后缀形式):先运算再+1;a=a+1a++是+1以前的值
②++a(前缀形式):先+1再运算;a=a+1++a是+1以后的值
③a–:略
④–a:略

6,if-else条件判断语句:

注:①if ( 1<=n<=2 );(没有意义,但也没有语法错误,执行空语句)
②if判断条件里只有0和1两个值,为真1则执行对应的语句。
③( 1<=n<=2 )和( n>=1&&n<=2 )不等价,前者C语言会把它译成逻辑值,运算不了。

7,while(其他情况)和do-while(必须执行一次时推荐)循环语句:

while先判断再循环;do-while先循环再判断

8,for循环语句(有固定次数时推荐):
for(语句1(init);语句2(condition);语句3(increment){
statement;
}

注:三个分号必须有,三个语句都可为空;
先12,若condition为真,执行statement;否则不执行。再3,再23232…循环。

9,switch-case语句:
switch(控制表达式){
    case 常量1:
         语句1;break;
    case 常量2:
         语句2;break;
         ...
     default:
         break;
         }

常量:常数或常数表达式
break:跳出本轮循环,没有break就会接着执行下一个case

10,运算:

①短路:在计算&&或||时,一旦左边能确定整个表达式,则不会进行右边式子运算。
②条件运算符:a=(a>0)?a-1:a+1;(当a>0时,a=a-1;否则,a=a+1)。
③i=3,5;→3
i=(3,5);→5。
在for中被使用,如:for(i=0,j=10;i<j;i++,j–)…
④pow(float x, float y) :x的y 次幂
注:pow函数效率很低。

11,数组

①定义数组:如int a[2];下标从0开始,a[2]是不存在的
注:数组一旦创建,不能改变大小,下标从0开始计数;在内存中连续存储。

More

1,注释的处理:

①对于注释/**/的替换:语句中的注释会被转换成一个空格,其它位置的注释会被忽视掉

#include <stdio.h>
int/**/main(){
printf("Hello World");
return 0;
} 

正常运行;大小 127.931640625 KiB(和之前不加注释一样大小)同理去证明。
②预处理器仅通过检查注释的结束符来检测注释中的字符,因此,不能嵌套块注释(/**/)。然而,可以使用//注释包含单行注释(//)的源代码:

   /* 暂时注释掉这两行:
        in a=2;  // 定义a是一个常量
        b = a+2;   // 计算b值
    暂时注释到此 */

如果想要注释掉包含块注释的部分程序,可以使用条件预处理命令:

    #if 0
       in a=2;  /* 定义a是一个常量*/
        b = a+2;   /* 计算b值*/
    #endif
2,字母的表示

①大写字母:x>=‘A’&&x<=‘Z’。
②(ASCII码,26个字母)A:65;a:97。

3,随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 int main(){
      srand(time(0));
      int a=rand();
      printf("%d\n",a);
      return 0;
}

注:x%n:[0,n-1]的一个整数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值