C语言入门--sizeof|static|extern

本文介绍了C语言中除法操作的小数处理、数组大小计算、自增运算符使用技巧、字符串比较方法及变量存储区域的概念。同时探讨了static关键字的作用范围、extern声明外部符号的方法及其在函数与变量上的应用。

1.除法

 想要计算出小数除法,必须有一个数为小数,例如:7.0/2

2.sizeof运算符计算数组大小

int arr[10];

sizeof(arr) // 40 数组的大小

sizeof(arr)/sizeof(arr[0]) //求数组元素个数=数组大小/数组中的第一个数

3.++,--

3.1 前置++

前置++:先++,后赋值

a = a+1;

b = a;

后置++:先赋值,后++

b = a;

a = a+1;

3.两个字符串不能使用 == 来判断相等,使用strcmp,例:strcmp(str1,str2),使用时引用string.h

数据在计算机上存放:内存 硬盘 高速缓存 寄存器

4.关键字

typedef unsigned int  uint;  //注意后面加;

static

1)修饰局部变量

 调试技巧F10 进入到函数内部F11

打印结果:4-13

栈区 堆区 静态区

栈区存放形参 局部变量

堆区存放动态内存开辟(malloc realloc ...)

静态区

static 修饰变量 变量存放在静态区

没有被static修饰的 例如 int a = 3; a放在栈区 临时变量 生命周期出作用域被销毁

总结:

普通的局部变量是放在内存的栈区上,进入局部范围,变量创建,出局部范围,变量销毁。

当static修饰局部变量时,局部变量放在静态区开辟空间的,这时的局部变量出了作用域,变量不销毁,下次进入作用域,使用的上次遗留的数据(改变了存储位置,由栈区->静态区,生命周期变长).

extern 声明外部符号

在add.c中 int g_val

在main中使用 在main函数之外声明: extern int g_val;

2)修饰全局变量

全局变量是有外部链接属性的,如果全局变量被static修饰,外部链接属性就变成了内部链接属性,其他源文件无法访问到这个符号

static 修饰后的局部变量只能在自己所在的.c文件中使用

3)修饰函数

例如,在add.c中定义函数,想在main.c中使用

首先声明外部变量 extern 函数名(形参);

再调用;

函数是具有外部链接属性的,其他源文件想使用函数,正确的声明就可以。

但是函数前使用static,外部链接属性变成了内部链接属性,只能在自己所在的.c文件使用,不能

在外部使用。

外部链接属性   内部链接属性--static   无链接属性--局部变量

if (pCurrObj->enable != pNewObj->enable || CUTIL_NOT_SAME_STR(pCurrObj->alias, pNewObj->alias) || CUTIL_NOT_SAME_STR(pCurrObj->username, pNewObj->username) || CUTIL_NOT_SAME_STR(pCurrObj->password, pNewObj->password) || CUTIL_NOT_SAME_STR(pCurrObj->domain, pNewObj->domain) || pCurrObj->useTLS != pNewObj->useTLS || pCurrObj->serverRetryMaxInterval != pNewObj->serverRetryMaxInterval || pCurrObj->serverRetryIntervalMultiplier != pNewObj->serverRetryIntervalMultiplier || CUTIL_NOT_SAME_STR(pCurrObj->resource, pNewObj->resource) || pCurrObj->keepAliveInterval != pNewObj->keepAliveInterval || CUTIL_NOT_SAME_STR(pCurrObj->serverConnectAlgorithm, pNewObj->serverConnectAlgorithm) || pCurrObj->serverRetryInitialInterval != pNewObj->serverRetryInitialInterval || pCurrObj->serverConnectAttempts != pNewObj->serverConnectAttempts || pCurrObj->X_TP_ServiceType != pNewObj->X_TP_ServiceType || pCurrObj->X_TP_WanBindMode != pNewObj->X_TP_WanBindMode #ifdef INCLUDE_WPB_CWMP_BINDING || pCurrObj->X_TP_UseDefaultGateway != pNewObj->X_TP_UseDefaultGateway || pCurrObj->X_TP_CurrentIntfPriDNS != pNewObj->X_TP_CurrentIntfPriDNS || pCurrObj->X_TP_CurrentIntfSecDNS != pNewObj->X_TP_CurrentIntfSecDNS #ifdef INCLUDE_CMM_DNS_SRV || pCurrObj->X_TP_SrvCurrentIntfPriDNS != pNewObj->X_TP_SrvCurrentIntfPriDNS || pCurrObj->X_TP_SrvCurrentIntfSecDNS != pNewObj->X_TP_SrvCurrentIntfSecDNS #endif /* INCLUDE_CMM_DNS_SRV */ #endif /* INCLUDE_WPB_CWMP_BINDING */ || pCurrObj->X_TP_MARK != pNewObj->X_TP_MARK ) { rsl_xmpp_update_sendMsg(CMSG_XMPP_CFG_UPDATE); }
最新发布
09-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值