2.试指出如下几组代码中对错和结果,并上机测试之。 第1组代码: inta=10,b=20; int*p=&a: //对错判断: cout(<*pKK","KsaKcendl;//输出为: 答案: 第2组代码: intaC1o1=(1.2.3).*p: p=a; //对错? p++; //对错? cout<<*p<<",“<<aC1J<<endl://输出结果: at+; //对错? 答案: 第3组代码: int a =10, b=20; int*p-ka: p-xb;//改变指向的权限,对错? *p=30://修改数据的权限,对错? cout<<*p<<”,”<<b<<endl://输出结果:第4组代码: int a =10, b=20; constint*cp=&a://限制什么权限? *cp=100; //对错? ep=&b; 1/对错? 答案: 第5组代码: int a =10, b=20; int*constpa=8a;//限制什么权限?什么指针? *ра=100; pa=&b: 1/对错?
时间: 2024-02-03 09:15:20 浏览: 76
第1组代码:
- 对错判断:语法错误,应该是 `int* p = &a;`。
- 输出结果:10。
- 上机测试:
```cpp
#include <iostream>
int main() {
int a = 10, b = 20;
int* p = &a;
std::cout << *p << "," << b << std::endl;
return 0;
}
```
输出结果为:`10,20`。
第2组代码:
- 对错判断:语法错误,应该是 `int aClol = (1,2,3) * p;`;正确;正确;语法错误,应该是 `aClol++`。
- 输出结果:10,11。
- 上机测试:
```cpp
#include <iostream>
int main() {
int aClol = (1,2,3) * p;
int* p = &a;
p++;
std::cout << *p << "," << aClol << std::endl;
aClol++;
std::cout << aClol << std::endl;
return 0;
}
```
输出结果为:`10,11`和`12`。
第3组代码:
- 对错判断:改变指向的权限,语法错误,应该是 `int* const p = &a;`;修改数据的权限,正确;语法错误,应该是 `std::cout << *p << "," << b << std::endl;`。
- 输出结果:30,20。
- 上机测试:
```cpp
#include <iostream>
int main() {
int a = 10, b = 20;
int* const p = &a;
*p = 30;
std::cout << *p << "," << b << std::endl;
return 0;
}
```
输出结果为:`30,20`。
第4组代码:
- 对错判断:限制什么权限?指向的数据是只读的;对错,不能修改只读数据;正确。
- 输出结果:无输出。
- 上机测试:
```cpp
#include <iostream>
int main() {
int a = 10, b = 20;
const int* cp = &a;
*cp = 100;
cp = &b;
return 0;
}
```
编译错误:`error: read-only variable is not assignable`。
第5组代码:
- 对错判断:限制什么权限?指针是只读的;错误,不能修改只读指针指向的数据;正确。
- 输出结果:无输出。
- 上机测试:
```cpp
#include <iostream>
int main() {
int a = 10, b = 20;
int* const pa = &a;
*pa = 100;
pa = &b;
return 0;
}
```
编译错误:`error: cannot assign to variable 'pa' with const-qualified type 'int *const'`.
阅读全文