最新回答 / LittleJayBird
我理解int const *p=&x 相当于int const (*p)=&x,所以*p不可修改。但x不受约束可以修改,比如修改x为4之后,输出*p也为4,所以我认为这样使用const唯一的意义是禁止通过p指针修改其指向的内容。*p=5是通过其他途径修改了其指向内容的值。
2015-11-06
已采纳回答 / 紫泉
表示一直在用vs2013,最近用vs2015了,简单的说,主要是vs的智能提示太强大了,用多了自己会变笨,会过于依赖智能提示等。如果用比较低级的,比如codeblocks或是dev-c就会好的多,因为这些软件的智能提示不强大,敲的时候感觉是自己在敲,而不是软件帮你敲,自己也会感觉自牛逼哄哄的。初学者推荐后面2款吧,如果是专业的,又想代码敲快一点,可以用vs2012及以上版本
2015-10-31
内联函数,没有牺牲内存空间而去提高运行速度!应该是类似移动插入,当执行到调用函数时候,该函数是内联函数,这时候就把该函数的函数代码直接插入到该调用代码位置!
2015-10-30
已采纳回答 / onemoo
你在题目中写的代码和图片中的不一样啊,以题中代码为例,区别就是:int *&p 中 q 是引用类型,p 为 q 的引用。int *p 中的 p 就是指针。引用类型有点“别名”的意思,操作p就相当于操作q。所以在这代码中,这两种声明方式不影响最后结果。
2015-10-30
# include <iosstream>
useing namespace std;
ina main ()
{
int x = 3;
int &y = x;
count << x << ","<<y<<endl;
y = 13;
count << x << "," << y << endl;
return 0;
}
useing namespace std;
ina main ()
{
int x = 3;
int &y = x;
count << x << ","<<y<<endl;
y = 13;
count << x << "," << y << endl;
return 0;
}
#include <iostream>
using namespace std;
int main(void)
{
int x = 3;
//定义引用,y是x的引用
int &y=x;
//打印x和y的值
cout << x <<"," <<y <<endl;
//修改y的值
y = 10;
//再次打印x和y的值
cout << x<<","<<y <<endl;
return 0;
}
using namespace std;
int main(void)
{
int x = 3;
//定义引用,y是x的引用
int &y=x;
//打印x和y的值
cout << x <<"," <<y <<endl;
//修改y的值
y = 10;
//再次打印x和y的值
cout << x<<","<<y <<endl;
return 0;
}
已采纳回答 / onemoo
可以这样写! 也许你的编译器太老了,不能正确处理scope。一般来说,不应在switch的case中定义变量,但其实并不是完全不能定义变量,而是有一定的限制。 因为执行流程可能会跳过某些case,这样定义语句也就被跳过了,所以语法不允许跳过在同个作用域中定义并初始化变量的语句,只有未初始化的声明语句可以跳过。但实际上case 1这个label中的for语句有独立的作用域(C++11新增的特性),在其中定义并初始化b是允许的,所以这个代码可以编译通过。
2015-10-27
已采纳回答 / DoDream
前者存在于栈,有一定的生命周期。后者存在于堆,跟程序同生死,所以当你不用该数组时最好释放掉,不然会导致内存泄露。推荐你一个不错的网站,百度搜索C++技术网,第一个就是了,里面有一些关于堆栈的文章,可以加深你对内容空间的了解,这个网站还有很多不错的资源可以下载,例如电子书,IDE等。
2015-10-27