小知识点(一)

int main()
{
	char *string1 = "hello world";
	char *string2 = "hello world";

	char string3[] = "hello world";
	char string4[] = "hello word";

	if ( string1 == string2 )
		cout<<"string1 string2 is the same"<<endl;

	if ( string3 == string4 )
		cout<<"string3 string4 is the same"<<endl;

	return 0;
}

以上大概是剑指offer中的例子。我们都知道,结果会输出string1和string2 相同。因为常量字符串在内存中只有一个拷贝,指向了同一个地址。但是我想输出他们的地址,首先我用了 cout<<string1;发现输出hello world 。但是&string1输出的是指针的地址,肯定也不对,所以查了下,发现这样是可以的:

cout<<static_cast <void *>(string1)<<endl;

这样string1和string2都可以输出相同的地址,验证上面的结论了。当然也可以使用cout<<(int)(string1);

参考文献:点击打开参考文献的链接


2. 关于extern的使用:

    在vs2008中,假如有a.h和b.h两个头文件,b如果要用a中的全局变量 int temp。如果temp在a.h的头文件中定义的,那么不用extern声明即可使用。如果temp在a.cpp中定义的全局变量,才需要使用extern int temp;

3.计算公式的代码总结:
1 最好要明确公式所代表的含义,这样可以尽可能的在工程上给予优化。
2 遇到多重循环,尽量把已知部分计算出来,这样可以减小循环内部的运算量。
3 由于公式的括号,先后顺序不一样,计算式要特别计算每个项的顺序
4 公式中的很多除法做之前,注意不要除以0;导致崩溃。

4.new数组后长度保存在哪里?16个字节,保存字节数

int *p=new int[10];
cout <<*(p-4)/4 <<endl;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值