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;
}

输出:




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

C/C++易错题解析

1.下列程序的输出结果为:(B)   #include void main() { char* a[ ] = { "hello", "the", "world"}; char** pa ...
  • wodeyijia911
  • wodeyijia911
  • 2014年03月10日 16:19
  • 708

2016/10/30 C++/C错题

以下一些答案解析转自牛客网牛友的分析,侵删int a =1,b =32 ; printf("%d,%d",a
  • Jang1996
  • Jang1996
  • 2016年10月30日 16:44
  • 666

PHP常见易错题

1、易错题1 function timesTwo(&$int) {         $int = $int * 2;     }     $int = 2;     $result = ti...
  • chajinglong
  • chajinglong
  • 2017年02月20日 23:00
  • 171

java查错题(经常混淆)

1.java静态方法不能引用在同一个类中的非静态方法和非静态成员变量 public class DoSomething { public static void main(String[] ar...
  • junli_chen
  • junli_chen
  • 2015年11月03日 11:04
  • 448

SQL--考试错题分析

分析:即使有''号,但是里面的值是Int类型的,T-SQL会进行自动的类型转换 分析: 选项A的create table语句中,表名后面的大括号“{”、“}”是错误的,...
  • gengzhi1293443962
  • gengzhi1293443962
  • 2017年01月13日 14:12
  • 176

Java错题本---实时更新

1.求输出 /* * @author mengdexin * */ public class Test { public static void main(String[] args) ...
  • bingbing8219
  • bingbing8219
  • 2015年04月17日 17:58
  • 496

历年错题集2015

历年错题集2015 2015年下半年系统集成项目管理工程师真题(上午)解析 第9题: 所有以满足企业和机构业务发展而产生的信息化需求为目的,基于( )的专业信息技术咨询服...
  • qq445622441
  • qq445622441
  • 2016年05月18日 13:14
  • 1095

Java代码查错题

1. abstract class Name {    private String name;    public abstract boolean isStupidName(String n...
  • zheng0518
  • zheng0518
  • 2013年06月06日 19:42
  • 593

C++ 错题

虚函数相关class A { public: void f() { printf("A\n"); } };class B: public A { public:...
  • qq_26437925
  • qq_26437925
  • 2016年08月15日 19:43
  • 419

计算错题率

String preStr[] = new String[list.size()/tCount]; Double pre = (double)error/tCount; preStr[j] =Nu...
  • wenghaoduan
  • wenghaoduan
  • 2016年07月07日 20:04
  • 358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++错题(8-30)
举报原因:
原因补充:

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