c语言第二课(基本语句,指针及数组)

  • 控制语句

1、条件分支语句

if(){}

else if(){}

else {}

switch(){

case 1:printf();break;      //一定要有break来截断代码,否则会继续执行后续的代码。

   .......

default:..........break;

}

  • 循环语句

for(初始条件;判断条件;步长)

{}

//开方函数 sqrt(a)

while(判断条件)当判断条件为真时,进入循环,为假时,跳出循环。ps  while(1)表示一直循环。

do{

}while();

与for,while语句的区别在于该语句会先执行一次,再进行判断条件。

  • 数据转换
  1. 中间变量法 缺点:占用内存
  2. 数轴法    缺点:int 有界  a+b的时候可能会超过界限。

{b=a-b;a=a-b;b=a+b;

}

3位操作法

  &:与  1&1=1   0&1=0

  |:或   1|1=1   1|0=1  0|0=0

  ^:异或 1^1=0   0^0=0  1^0=1

  ~:取反  包括符号位

     ps -1 =1000 0001 取反码 1111 1110 取补码 1111 1111 ~取反 0000 0000

     所以在将-1输入计算机后转换成补码后,再取反的值为0。

  换位方法 a=a^b  b=a^b  a=a^b

 如何快速计算一个二进制数中有多少个1

x&(x-1)

  • 函数
  1. 函数定义:int/void(返回值类型:整数型/无返回值) name(int a(函数的参数:形参))

             {函数的主体}

  1. 函数的申明:void name ();类似extern的作用
  2. 函数的调用:name(a)  a:实参(实际处理的参数)

  • 指针(ptr)

ps:指针也是变量(8字节) 里面存的是地址

int* 表示int型的指针

&:取地址符 ps: int* p=&a; 表示p指向a内存

*:取值符号  *p=10     ps:p;里存的是a的地址 加*->*p 才表示a,不能直接用p

  • 宏函数

#define ABS(x)  (x)<0?(-x):(x)

单目运算符:只需要一个参数的运算符 a++ ,a--

双目运算符:a+b 需要两个参数的运算符:+ - * %

三目运算符 __?__:___    第一个是运算条件 判断是否成立  成立则允许:前的语句 不成立则允许:后的语句

ps:由于宏定义是文本替换,所以变量要加()

#define M(x,y,z)  x*y+z

int a=1,b=2,c=3;

M(a+b,b+c,c+a)

M=a+b*b+c+c+a=12

因为不同文件里的宏定义可能重复,所以需要先确定是否有重复

#ifndef __name_H__  

#define__name_H__ (如果没有这个宏定义,那么我定义一个....:条件编译,避免头文件重复包含)

#endif

printf(“%s\n”,__FILE__):  显示当前所在文件名
printf(“%s\n”,__func__);  显示当前所在函数名

printf(“%s\n”,__PATE__);  显示当前编译日期

printf(“%s\n”,__TIME__);  显示编译时间

printf(“%s\n”,__LENE__);  输出当前行数

写日志函数

void Write_Log(char* FileName,char* FuncName,int line,char *log)

{printf(FileName :%s, FuncName: %s, line: %s, log:%s,)

}

数组:一组相同类型数据类型的数据集合

int a[sum]  sum:数组容量 0-n   ps:a[10]  0-9 不能包括10

数组作为参数被传递时参数被传递时,会被弱化成指针

内存大小为8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值