C语言小知识点

1、malloc标准格式:

char* a;

a = (char*)malloc(50);

if(nullptr == a)

{

        return;

}

memset(a,0,50);

free(a);

malloc和new的区别:

new做两件事:分配内存和调用类的构造函数,delete是:调用类的析构函数和释放内存。而malloc和free只是分配和释放内存。

2、在定义方法时,在最后一个形参后加上三点 …,就表示该形参可以接受多个参数值,多个参数值被当成数组传入。这种特性经常用于像printf这样的函数中,该函数可以接受任意数量的参数。然而,为了处理这些额外的参数,你通常会使用<stdarg.h>头文件中的宏,如va_startva_argva_end

3、在字符串前加一个L表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。如果在字符串前加_T,则编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式 。

4、首先需要说明的是sizeof和strlen都可以求长度,但是却有很大的区别,简单来说可以概括为以下几点:

     1、sizeof是一个关键字,而strlen确实一个函数。

     2、sizeof求的是字节长度,而strlen求的却是实际长度。

        比如int a=1;sizeof(a)==4而strlen(a)=1

     3、sizeof求的是分配过来的长度,而strlen求的却是实际使用的长度。

       比如:char a[30]="abcd";

       sizeof(a)=30;而strlen(a)=4;

     4、strlen求的长度是以'\0'结束的。

       比如char a[30];strlen(a)的结果是不定的,而sizeof(a)=30;

        同理:char a[30]={'a','b','c'};对于strlen来说也是不定的,而sizeof却是30。

      5、sizeof是在编译是计算的,而strlen是在运行是计算的。

5、ASCII和Unicode的区别:

6、函数参数都是从左到右压入堆栈的,被_stdcall修饰的函数,其参数都是从右向左通过堆栈传递的, 函数调用在返回前要由被调用者清理堆栈,一般被用于回调。

7、正如我们可以从语法中得出的那样,整数文字有四种类型:

·  纯十进制,必须以非零数字开头。

·  八进制,任何以0开头的数字(包括纯0)。

·  二进制,需要前缀0b或0B。

·  十六进制,需要前缀0x或0X。

8、将一个整形地址强转成一个地址:int *p = (int*)0x123456。

9、如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止。如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍。

10、~是按位取反运算,与反码是不同的。反码法规定,正数原反补码相同,负数的反码为原码除符号位以外取反。

11、int a[10];这样就会开辟10*4字节的内存空间,是在你调用这个函数的时候,这个空间会存在于函数栈上。栈上的对象会在函数退出时失效。如果在.h文件,则会在new对象时开辟。

12、getenv("abc")获取环境变量abc的值。

13、负数可以通过两种形式表示:定点,例如:-1.25,符号位1,整数部分111,小数部分0100(4 位小数),合并这些部分得到:1 111 0100,表示为 8 位定点数时是 11110100。浮点,例如:-1.25,正数1.25转化为1.01,负数就是-1.01。

14、&和|表示多位数按位与或者按位或,不能用于1bit和1bit的与或操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值