2021.12.19

1、memset

memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

memset(a,‘0‘,sizeof(a));

这条语句是把a中所有字节换做字符“0”,常用来对指针或字符串的初始化。

结构:extern void *memset(void *buffer, int c, int count);

   功能:把buffer所指内存区域的前count个字节设置成字符c。

而memset(a,‘0‘,sizeof(a));

即是把a中所有字节换做字符“0”

2、Extern关键词

Extern的问题在于不知道这个关键词出现的时候到底是声明还是定义?

Extern详解

1、函数的声明extern关键词是可有可无的,因为函数本身不加修饰的话就是extern。但是引用的时候一样需要声明的。

2、全局变量在外部使用声明时,extern关键字是必须的,如果变量没有extern修饰且没有显式的初始化,同样成为变量的定义,因此此时必须加extern,而编译器在此标记存储空间在执行时加载内并初始化为0。而局部变量的声明不能有extern的修饰,且局部变量在运行时才在堆栈部分分配内存。

3、全局变量或函数本质上讲没有区别,函数名是指向函数二进制块开头处的指针。而全局变量是在函数外部声明的变量。函数名也在函数外,因此函数也是全局的。

4、谨记:声明可以多次,定义只能一次。

5、extern int i; //声明,不是定义
int i; //声明,也是定义

代码示例

/* test.c */
#include <stdio.h>
 
int etn = 100;
 
void layout()
{
    printf("test.c: The etn is %d\n", etn);
}
/* main.c */
#include <stdio.h>
 
extern int etn;
 
int main()
{
    layout();
    printf("main.c: The etn is %d\n", etn);
    return 0;
}

参考文章链接:https://blog.csdn.net/qq_38880380/article/details/81474580

3、sizeof关键字

(0)sizeof是运算符,不是函数;

(1)sizeof不能求得void类型的长度;

(2)sizeof能求得void类型的指针的长度;

(3)sizeof能求得静态分配内存的数组的长度!

(4)sizeof不能求得动态分配的内存的大小!

(5)sizeof不能对不完整的数组求长度;

(6)当表达式作为sizeof的操作数时,它返回表达式的计算结果的类型大小,但是它不对表达式求值!

(7)sizeof可以对函数调用求大小,并且求得的大小等于返回类型的大小,但是不执行函数体!

(8)sizeof求得的结构体(及其对象)的大小并不等于各个数据成员对象的大小之和!

(9)sizeof不能用于求结构体的位域成员的大小,但是可以求得包含位域成员的结构体的大小!

详解来自原文:

 C/C++刁钻问题各个击破之细说sizeof_w57w57w57的专栏-CSDN博客

4、i++与++i的区别

j=i++;等价于j=i;i=i+1;而j=++i;等价于i=i+1;j=i;。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值