以下表达式选择结果是?( )
std::string str1("trend"); std::string str2("micro"); std::string& strs = str1; std::string* ptrs = &str1; strs = str2; ptrs = &str2;
std::string str1("trend"); std::string str2("micro"); std::string& strs = str1; std::string* ptrs = &str1; strs = str2; ptrs = &str2;
strs = micro, * ptrs = micro
strs = micro, * ptrs = trend
strs = trend, * ptrs = micro
strs = trend, * ptrs = trend
1)指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来
的变量实质上是同一个东西,只不过是原变量的一个别名而已。如:
int a=1;int *p=&a;
int a=1;int &b=a;
上面定义了一个整形变量和一个指针变量p,该指针变量指向a的存储单元,即p的值是a存储单元的地址。
而下面2句定义了一个整形变量a和这个整形a的引用b,事实上a和b是同一个东西,在内存占有同一个存储单
元。
(2)引用不可以为空,当被创建的时候,必须初始化,而指针可以是空值,可以在任何时候被初始化。