指针
1 分析运行结果
观察以下最简单的指针代码,它的运行结果会是怎么样呢?
cpp
#include <iostream>
using namespace std;
int main() {
int num = 42;
int *p = #
cout << *p << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int a = 10;
int *p = &a;
*p = 20;
cout << a << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int x = 5, y = 10;
int *p = &x;
p = &y;
cout << *p << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int n = 8;
int *p = &n;
cout << p << endl;
return 0;
}输出示例
2 分析错误
以下代码有语法错误吗? 如有错误,请指出其中的错误。
cpp
#include <iostream>
using namespace std;
int main() {
int num = 100;
int *p;
p = num;
cout << *p << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int a = 5;
int *p = &a;
cout << p << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int x = 3;
int *p = x;
cout << *p << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int arr[] = {1,2,3};
int *p = arr;
cout << *p << endl;
return 0;
}答案(同学们也可以编译运行,进行验证)
3 分析运行结果
观察以下最简单的指针代码,它的运行结果会是怎么样呢?
cpp
#include <iostream>
using namespace std;
int main() {
int a = 1, b = 2;
int *p = &a;
cout << a << endl;
*p = 10;
cout << a << endl;
p = &b;
*p = 20;
cout << a << " " << b << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
int *p1 = &a, *p2 = &b;
*p1 = *p2 + 5;
cout << a << " " << b << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
int nums[] = {1,3,5,7,9};
int *p = nums;
cout << *(p+2) << " " << p[3] << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
// 多级指针,不要求掌握
int main() {
int x = 5;
int *p = &x;
int **pp = &p;
**pp = 10;
cout << x << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
char str[] = "Hello";
char *p = str;
p += 2;
cout << *p << endl;
return 0;
}:::
输出示例
4 分析错误
以下代码有语法错误吗? 如有错误,请指出其中的错误。
cpp
#include <iostream>
using namespace std;
int main() {
int arr[3] = {1,2,3};
int *p = arr;
cout << p[1] << endl;
return 0;
}cpp
#include <iostream>
using namespace std;
int main() {
double d = 3.14;
int *p = &d;
cout << *p << endl;
return 0;
}