从“零”开始的C语言

https://zh.cppreference.com/w/%E9%A6%96%E9%A1%B5

C语言学习网

const int

~  取反符号 如 a=~b   (按二进制位取反)

三目运算符  a=(b<c?b:c)

局部变量都属于自动变量 所以在定义时 如
int 应为 auto int 但auto省略

enum  枚举

register寄存器   
register int  把变量定义成寄存器变量

typedef 类型定义   使用:
typedef unsigned int u-int
此时 unsigned int和 u-int 等效

define宏定义 
预处理指令: #define func(x) x*x
 int b , A=10;
b=func(A);
func()直接替换为后面的表达式 需要注意运算顺序  如
b=100/func(A)      此时b的值为100

指针所占的内存由系统决定。32位为4个字节,64位为8个字节。
 

Else 和距离它最近的未成对的if匹配   故输出结果为空

即只判断一个if(a==1)

Switch语句中  default和case 的顺序可以改变

二分查找

Goto简单用法

Memset

记录函数调用次数,注意:++的优先级要高于*

Printf的返回值为其打印的数字个数

Stack Overflow - Where Developers Learn, Share, & Build Careers  程序员的知乎网站

简单地递归

Strlen和sizeof   对同一个字符数组时,sizeof比strlen大1.

不使用第三个变量:交换a和b的值

1.a=a+b,b=a-b,a=a-b;  但是有一定的局限性,可能会存在数值溢出的情况。

2.a=a^b,b=a^b,a=a^b;  ^是异或运算。但是执行效率较低。

3.异或的规律:0^a=a,   a^a=0,   a^b^b=a(利用此规律寻找单个数字),

移位操作符:>>n左移n位(二进制)  右边补0

                          <<n右移n位(二进制)  左边补符号位

                          >>>无符号运算符  左边补0

&按位与 |按位或

统计num的补码中的数字1的个数

num的补码通过不断地右移位并且与1的方法计算

Sizeof中的表达式不参与运算,因此s的值依然为0.

输出结果为 1 2 3 4 

分析:a0a0时,后面的逻辑与之后的式子不在计算。

下面的结果为2 2 3 4

a已经为真,后面的逻辑或也不再运算

逗号表达式:结果为最后一个式子的值

指针:允许指向数组元素的指针t与指问数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。

关于数组arrarr是数组首元素的地址  &arr[0]也是数组首元素的地址  &arr是整个数组的地址。

二级指针:

指针数组:数组中的元素都是指针

输出结果为11223300

输出结果为  >

I-1sizeof的返回值类型为无符号型,因此需要把-1转变为无符号型,即-1的补码比sizeof大得多。

计算一个整数的二进制数字中的1的个数:

结果为(1111111111111111111111111000000010

结果为255,数字为-1~-128127~0   0为字符0,即结束标志

指针数组:

用数组指针打印二维数组:

函数指针:

函数指针数组:

使用函数指针数组,减少代码的量

Strlen的返回值为无符号的int型,strlena-strlen(b)>=0

交换两个字符串

Strcat函数:

将后一个字符串加到前一个字符串的末尾,前一个字符串的空间必须足够。

Strstr函数:

Strstrp1,p2)在p1中寻找p2,返回p1p2的位置,否则返回空指针。

Strtok函数:切割字符串

Memcpy,可以拷贝数组,字符串等。

Memmove:处理有重叠的拷贝的情况

 Memset函数:初始化数组或字符串

 Memsetarr,初始化的内容,要初始化的大小)

位(二进制位)段:冒号(:)后面的数字所占的字节数。Int型每次开辟4个字节(32位),同时可以把abc放入。不足时再次开辟四个字节将d放入

Char类型每次只开辟一个字节

Calloc函数同时可以初始化数组为0.malloc效率较高

Free时需要指针指向开辟内存的首地址,下面的示例是错误示例。

Free后,指针不会被置为NULL

柔性数组:使用malloc调整数组大小。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值