C语言速成

编译预处理

作用

简单来说,编译预处理的作用就是将代码变得不像人话。之后才能被编译器编译成汇编进而生成机器码

基本类型

#include<XXXXX.h> 引用头文件
#define XXX AAA 将代码中的XXX 全部替换为 AAA
#ifndef 判断之前有没有define过(多用在头文件中)
#endif 头文件结束标志

变量

定义一个变量,可以理解为申请了一个存储空间,这块存储空间内可以存放数据。

int a;

就是定义了一个int型变量,不同类型变量存储空间大小不同。不过实质上都是一个个基本存储空间堆起来的。

flaot a[10];
int b[] = {1,2,3,4,5};
a[5] = 0 ;

数组也可以这么理解,a[10] 为一个由10个float型变量堆起来的空间,可以通过 a[i] 对 a[10] 中的第 i 个 float型变量操作(i = 0~9)。需要注意的是,i是从0 ~ n-1。a[0]是第一个以此类推。变量声明之后存储空间的大小将不再变化,所以[]中不可以用变量。 在声明同时赋值的情况下可以不写。

函数

函数基本结构

int F??kTimes (int night){
	int times = 0;
	times = night*7;
	return times; 
}

逐行分析
第一行: int F??kTimes (int night)
int 为函数类型与返回值return XXX有关,int 返回 int型变量,float返回float型,以此类推。void为无返回值函数。
F??kTimes 为函数名(两个??代表消音,我是个有素质的人),函数命名规则百度即可,一般用英语单词就。(int night)为传入参数。
第二行:int times;
定义一个名为times的int型变量并赋初值,变量类型也又float 等不同类型。变量命名规则百度即可,一般也用单词。且不能为关键字如if、else。
第三行:times = night*7;
将night×7的值赋给times
第四行:return times;
返回return值,一般将返回值赋给变量如 a = F**kTimes; 则a的值变为times的值。

主函数

主函数函数名为 main 是程序的开始,不可或缺所有子函数,语句都必须再主函数中。主函数结束,程序即结束。

子函数

用来实现各种子功能,比如上面代码块,功能是求一夜几次。

运算符

加 a+b
减 a-b
乘 a*b
除 a/b
求余数 a%b
加减乘除取余运算后结果都等与一个数一般用来赋值给变量,如 c = a+b;
大于 a>b , 大于等于 a>=b
小于 a<b , 小于等于 a<=b
等于 a==b , 不等 a != b
关系运算符用来比较,如果是对的为“真”即值为1,否则为“假”值为0。
与 && , a && b ,当 a 和 b 都为1时 ,此表达式结果才为1
或 | | , a | | b ,当 a 和 b 有至少一个为1时 ,此表达式结果才为1
非 ! , !a , 当a 为1 时,!a 为0
(),这个东西用法就和数学中的()一样。
赋值 a=b
将 b 的值复制给 a ,如b等于520,a=b之后 a也变成520,b 值不变。
运算符可运算变量与变量如 a+b 也可运算变量与常数 如 a + 7。
运算符还有很多,但是会以上基本可以应付简单程序。

关键字

if(表达式){
程序段
}

if功能为:如果表达式为1 执行程序段,否则跳过这段。if可以单独存在。

if(表达式){
程序段1
}
else{
 程序段2
} 

else依赖于if而存在,如果if中的表达式为1,执行if {}中的程序段1。否则执行else {} 中的程序段2。

if(表达式1){
   程序段1
}
else if (表达式2){
   程序段2
} ...(省略n句 else if)...
else{
   程序段n+1
 } 

else if 主要功能就是把非表达式1的情况细分。

while(1){
程序段
} 

while判断()中的表达式,为真会开始或继续循环,否则跳出循环。上面的while(1)为死循环,除非程序段中有跳出循环语句否则将会执行到宇宙死,或者机器死。下面的例子就是输出100句“fuc* you”

int i = 0 ;
while(i < 100){
 i ++ ; 
 printf("fu*k you \n")
 }
for(语句1;表达式;语句2){
 	程序段
}

for会先执行语句1(可以为空),之后判断表达式,如果为真,执行{}内程序段,之后执行语句2,否则跳过。

常用的关键字就这些,剩下还有 do{…}while()、swich(){ case : } 、 break 、 continue 等等,掌握常用的,剩下的会在实践中一点点积累出来。

常用函数/头文件

#include<stdio.h>
#include<math.h>
int main(){
int a = 0 ;
scanf("%d",&a);
a = pow(a,a);
printf("%d",a);
return 0 ;
}

scanf("%d",&a); 将输入的变量值赋给送到 a 的地址,如果输入为5 则 a等于5,a==5 值为1.
printf("%d",a); 将a的值输出到屏幕。
pow(a,a); 返回a的a次方,a = pow(a,a); 将返回值赋给a。
#include <stdio.h>是基本输入输出头文件,用的最多,scanf、printf都在stdio.h里。math.h是数学运算头文件。pow这种函数一般在这里面。

include"fu*k.h" 

#include " XXXX"这种 " " 里的头文件一般是自己写的。

指针

指针这玩意很秀,本人经常别人的代码里指针的用法秀到。乱七八糟,我也不想梳理了,建议看书。

代码实操

下面是一段简单的求输入的数是不是素数的代码,本人一般在Linux下写C++,于是贴一段大一写的练习题,为了加深理解,将代码改的比较冗长。 “//” 这个为单行注释,//之后的只是给人看的,经过预编译之后就没了,/* 。。。。。。/可以将从“/” 到 “*/”之间所有行注释掉。很happy。

#include <stdio.h>

void output( int flag ){	
	if(flag == 1){
		printf("是");
	}
	else{
		printf("不是")
	}
}

int main()
{ 
	 int a,b,c,d=0;   // 定义  a b c d ,并给赋初值0
	 scanf("%d",&a);    //输入一个数 
	 for(b=2;b<a;b++)   //循环从2到这个数次数 
	 {
	  if(a%b==0)    //如果有一个数可以整除,d加一然后跳出 
	 	 {
			   d++;
			   break;
		  }
	 } 
	 if(d>0)      //如果有d加一了,两个以上数能整除a不是 
	 {
	  	c = 0;
	        output(c);
	 }
	 else      //否则是 
	{
		 c = 1;
		 output(c);
	  } 
	 return 0;
}

结语

先有汇编后有C,但是C是目前系统学编程的第一步(少儿编程不算,那是给小孩子玩的)。想玩好C并不容易,但是,大胆和尝试,会让你进步神速。忘了说,一定要把输入法切到英文,否则编译器不认识,会出error。

本人对C的理解只是比小白高点,如有哪里不对,望大佬指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值