Skip to content

指针

1 分析运行结果

观察以下最简单的指针代码,它的运行结果会是怎么样呢?

cpp
#include <iostream>
using namespace std;

int main() {
    int num = 42;
    int *p = &num;
    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;
}
答案(同学们也可以编译运行,进行验证)

输入密码才能查看参考答案噢