C++错题(8-30)

原创 2016年08月30日 08:12:58

1、template:一定要类型匹配

template<class T>
void f(T &i)
{
	cout<<1<<endl;;
}
template<>
void f(const int &i)
{
	cout<<2<<endl;
}
int main()
{
	int i=8;
	f(i);
	float j=3.14;
	f(j);
	const int k=1;
	f(k);
	system("pause");
	return 0;
}
输出:1 1 2  只有当参数类型是const int类型时,才会调用第二个f().

2、返回引用类型

int& func()
{
	static int x = 3;//静态局部变量,函数结束后不会释放,存在全局区
	cout<<"&x = 0x"<<hex<<&x<<endl;
	return x;
}

int& f()
{
	int y = 3;//局部变量
	cout<<"&y = 0x"<<hex<<&y<<endl;
	return y;
}
int main()
{
	func()=8;//通过外界赋值,改变x的值
	f()=9;
	cout<<func()<<endl;
	cout<<f()<<endl;//再次调用会重新给y分配空间
	system("pause");
	return 0;
}
输出显示:

3、地址问题

int main(void)
{
	int a[2][2] = {{0,1},{2,3}};
	int *b = &a[0][0];
	int *b1 = &a[1][0];
	printf("b = 0x%x\n",(int)b);
	printf("b1 = 0x%x\n",(int)b1);
	printf("b[0] = %d\t",b[0]); //b[0]->*(b+0)->0
	printf("b[1] = %d\n",b[1]); //b[1]->*(b+1)->1
	printf("b1[0] = %d\t",b1[0]); //b1[0]->*(b1+0)->2
	printf("b1[1] = %d\n",b1[1]); //b1[1]->*(b1+1)->3
	int **c = &b;
	int **c1 = &b1;
	printf("c[0][1] = %d\t",c[0][1]); //c[0][1]->*(*c+1)->*(b+1)->1
	printf("&b = 0x%x\n",(int)&b);
	//printf("c[1][1] = %d",c[1][1]); //c[1][1]->*(*(c+1)+1)->*(*(&b+1)+1)地址b的下一个地址
	printf("c1[0][1] = %d\t",c1[0][1]); //c1[0][1]->*(*c1+1)->*(b1+1)->b1[1]->3
	printf("&b1 = 0x%x\n",(int)&b1);
	//printf("c1[1][1] = %d",c1[1][1]); //c1[1][1]->*(*(c1+1)+1)->*(*(&b1+1)+1)->地址b1的下一个地址
	
	printf("&a[0][0] = 0x%x\n",(int)&a[0][0]);
	printf("&a[0][1] = 0x%x\n",(int)&a[0][1]);
	printf("&a[1][0] = 0x%x\n",(int)&a[1][0]);
	printf("&a[1][1] = 0x%x\n",(int)&a[1][1]);
	system("pause");
	return 0;
}

输出:




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

2013-8-14 PMP错题记录(2)

9. 项目经理在与客户进行某可交付成果的确认范围过程。下面哪项是项目经理应该确定的最重要的事情?  A. 正确程度 B. 时间符合要求 C. 接受  D. 完全 C。确认范围就是验收可交付成果。 1...

[牛客网]错题整理(8)

(1)只能使用成员函数重载的运算符有:=、()、[]、->、new、delete。 (2)单目运算符最好重载为成员函数。 (3) 对于复合的赋值运算符如+=、-=、*=、/=、&=、!=、~=、%=、...

牛客网错题集-C++

1. 枚举初值enum string{ x1, x2, x3=10, x4, x5, } x;函数外部问x等于什...

c++面试题之易错题本

1,inline只适合函数体内代码简单的函数使用,不能包含复杂的结构控制语句例如while switch,并且内联函数本身不能是递归函数; 2,在C++中,对于有virtual的类,其sizeof会比...

C++易错题总结

1.enum string{ x1, x2, x3=10, x4, x5, } x;函数外部问x等于什么?如果是...

3月份错题盘点

  • 2017年06月21日 16:47
  • 7.19MB
  • 下载

牛客网 8-11 网络基础 操作系统 编译与体系结构 30题知识点总结

1、代码编辑功能是编辑器提供的 代码规范检查也是编辑器提供的 分析代码问题是调试器提供的 编译器主要完成源码向目标代码的转化       2、RS-485分为两大类:两制线、四制线。其中...

牛客网 8-1 网络基础 操作系统 编译与体系结构 30题知识点总结

1、  系统内可以有无父进程的进程。  init进程没有父进程     2、死锁 定义 :在一个进程集合中,所有的进程都在等待只能由该进程集合中的其它进程才能引发的事件,这就是死锁 解释 :...

我的汽车理论考试错题集

  • 2010年03月22日 17:34
  • 55KB
  • 下载

一个基于网页的错题本

  • 2014年06月30日 21:43
  • 11.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++错题(8-30)
举报原因:
原因补充:

(最多只允许输入30个字)