c语言总结二

1.register关键字
  register修饰目的:申请将变量存放到寄存器中(早期的C编译程序不会把变量保存在寄存器中,当时register修饰符是一种很有价值的补充。现在基本上会忽略register修饰符)
  register变量可能不存放在内存中,所以不能用“&”来获取register变量的地址。
  只有局部自动变量和形式参数可以作为寄存器变量,其它(如全局变量,局部静态变量)不行。
Compare:C++编译器发现程序中需要取register变量的地址时,register对变量的声明变得无效。
2. const关键字
在c中,const修饰的局部变量在栈上,全局变量在只读存储区。

int main(void)
{
	const int a = 5;
	int array[a] = {0};
}

在这里插入图片描述
在C++中。const修饰的是真正的变量

int main(void)
{
	const int a = 5;
	int array[a] = {0};
}

编译通过
3.sizeof & strlen

int a=0, b=0;
char s[]="hello\n\r\0";
a= sizeof(s);
b = strlen(s);

在这里插入图片描述
疑问:c/c++在数组初始化时数组的长度都必须是一个常数,不能是变量(但可以是常变量),这一点是毋庸置疑的。但是为什么提出这个问题呢,是因为在使用G++时发现,C++数组长度在初始化时用变量,不报错!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值