c语言笔记

一简单点

1.1调试的作用与如何调试

调试-----编好程序后,用各种手段进行查错和排错的过程

有很多问题导致不能调试
1.要用管理员身份运行dev c++
2.程序编译保存的文件夹必须在dev c++的目录下 最好是全英文
3.调试后 无显示变量 选择连接器,将产生调试信息改为yes

1.2a++与++a的区别

a++和++a 都属于自增运算符,区别是对变量a的值进行自增的时机不同。a++是先进行取值,后进行自增。++a是先进行自增,后进行取值。

例如:假设 x=3,y=4;

     (1)  (x++)+(++x)=8



      解释:对于第一个(x++),因为x++是先取值后自增,所以(x++)所取得值为3,然后x进行自增,此时x=4;对于第二个(++x),因为++x是先自增后取值,所以(++x)所取得值为5,此时x=5,所以结果为8。



     (2)  (x++)/3+(--y)*2-(x--)%6+(y++)*3-(y--)



                1+6-4+9-4=8



      解释:首先(x++)取值为3,然后x=4;然后(--y)取值为3,此时y=3;然后(x--)取值为4,然后x=3;然后(y++)取3,然后后y=4;最后(y--)取4,然后y=3;



      注意:()可以提高算数优先级,所以先算括号里面的表达式,但是x++的取值为x,然后x在自增。



      重点: ++ 运算优先级 很高

1.3 if else的使用方法

if (条件) {
} else/否则/ {
}

嵌套if=else
else靠近if
if中的if为else影响对象(不加大括号)
加大括号影响第一个if

//就是else影响的永远是最近的那个if

1.4 if(条件) 的用法

例如:int a=5;
if (a>0) {
printf(“可以输出”)
}
a>0–条件符合 使得结果输出为1
若是a<0–结果输出为0
if (1) {
printf(“成功输出”)
}
即 if () 括号中不一定要a>0,只要括号中的结果是对的,那么就可以输出

1.5switch的用法

int a=5;
switch (a/5) {
case 1:printf(“随便”)
case2:
case3:
}
a/5使得结果输出为1
符合case 1
当然1只是一个例子
你也可以case white
case blue

1.6while与do while区别

do while先循环再判断
Do {
<循环体语句>
}while(<循环条件>);

while先判断再循环
While(条件){
动作;
}

1.7 for用法

for(初始条件;条件;动作)
不细说,没啥难的

二、难一点

2.1goto out用法

Goto out

Out:(跳到这,跳过中间的程序)
注:可跳过程序直接至另一个地方继续运行
禁术,少使用

2.2 字节如何显示

Sizeof??)
可以显示??有几个字节
不细说

2.3 原码,补码,反码如何转换

好像都是八进制哦

2.4整数的范围

在这里插入图片描述
在这里插入图片描述

2.5进制的表达

在这里插入图片描述

16进可表达2进
0001 0010 2进
1 2 16进

2.6逃逸字符

在这里插入图片描述

2.7类型的强制转换

Int a=(double)a/b
将右边a变成double
右边为double
左边a也为double

2.8复制代码可以改为这种

#include <stdio.h>

void sum(int begin,int end) //1
{
int i;
int sum=0;
for (i=begin;i<=end;i++) {
sum+=i;
}
printf(“%d加到%d的值为%d\n”,begin,end,sum);
}

int main()       //2
{
	sum(1,10);
	sum(10,30);
	sum(30,50);
  }

可以将1  2换  但是要在2前面加 void sum(int begin,int end) ;    //要分号

不用void ***
就一直要复制 printf(“%d加到%d的值为%d\n”,begin,end,sum);

三、难点

3.1指针大集合

传入函数的数组为指针
Sizeof(a)==sizeof(int*)
*a=a[]
可以用数组的运算符[]进行运算

在这里插入图片描述

在这里插入图片描述
第二第三一样
*在后 &i无法修改
*在前 p3无法修改


让指针加一  加的是字节
Char +1     int +4

*p等于等于a[0]
*p+1等于等于a[1]
用中文是因为不知道为什么==不能打出来

用指针相减、
结果是多少进制/sizeof(int or char …)

3.2malloc用法及free

int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。

每次用malloc都需要free(指针名字)
指针名字=NULL
不然会变成野指针

我也不是很熟这个怎么用

3.3指针的输出用法

输出地址或整数的用法

3.4strcmp用法

strcmp() 会根据 ASCII 编码依次比较 str1 和 str2 的每一个字符,直到出现不到的字符,或者到达字符串末尾(遇见\0)。

返回值:
如果返回值 < 0,则表示 str1 小于 str2。
如果返回值 > 0,则表示 str2 小于 str1。
如果返回值 = 0,则表示 str1 等于 str2。

注意,上面的用法小概率会出错
在n写上3,那只判断前3个

3.5struct与union的简单区别和用法

struct 变量1 {
int 变量2;
int 变量3;
};
struct 变量1 变量4 = {3,4}
printf(”%i %i“,变量4.变量2,变量4.变量3);
注意,不都是括号,有逗号的
struct中的变量只能是int
union用法与之类似 但是其中的变量可以是指针,char什么的

四、杂七杂八

4.1随机数命令

#include <stdlib.h>
#include <time.h>
Srand(time(0));
Int a=rand();
两位随机数
a%100

4.2 最大公约数如何求

如果b=0 结束,a为最大公约数
否则,计算a/b的余数,让a=b,b=余数
回到第一步
辗转相除法

4.3 %,%d,%i

c语言中的%u是输入输出格式说明符,表示按unsigned int格式输入或输出数据。 %d 有符号10进制整数 %i 有符号10进制整数

4.4符号优先级

不全哦
在这里插入图片描述

4.5程序的一些小毛病

在这里插入图片描述

4.6 如何构造素数

在这里插入图片描述

4.7int main(void)是什么意思

int main (void) 指的是此函数的参数为空,不能传入参数,如果你传入参数,就会出错。 int main () 表示可以传入参数。 在 C++ 中 int main () 和 int main (void) 是等效的,但在 C 中让括号空着代表编译器对是否接受参数保持沉默。

4.8字符串的输入

在这里插入图片描述

4.9动态内存分配

问:什么时候需要动态分配内存
答:当程序中有比较大的数据块需要使用内存的时候使用。原因:比较大的数据块如果使用了静态内存,在该数据块运行完毕后不能动态的释放该内存,直到整个程序运行完才能释放,如果整个程序比较大,有可能因为内存不够而发生错误。

4.10typedef的用法

例如 int a;
int b;
使用typedef可以改成
typedef int i;
i即为int;
i a;
i b;

typedef 原来的字符 你想要将改的名字;
可以使代码更加简洁

4.11静态本地变量

![在这里插入图片描述](https://img-blog.csdnimg.cn/842e78ce071f46e4a1d1c3603274370c.png
static只调用一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值