Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

const指针那一块感觉有点问题 #45

Closed
Bennett561 opened this issue Jun 25, 2020 · 2 comments
Closed

const指针那一块感觉有点问题 #45

Bennett561 opened this issue Jun 25, 2020 · 2 comments

Comments

@Bennett561
Copy link

看博客里写的是(包括例子的说明),常指针指向的对象的值不能变,可以通过非 常指针来修改。

这个说法似乎不太对,应该是常指针指向的对象不能变,即不能先指向a,又指向b。但是是可以直接修改指向变量的值的(只要这个变量不是const)。我这段代码实验了一下,正常运行:

        int d = 2;
        int e = 3;
        int * const ptr3 = &d;

        //ptr3 = &e;//非法
        std::cout << *ptr3 << std::endl;
        *ptr3 = 4;
        std::cout << *ptr3 << std::endl;

不知道是不是这么个情况

@Light-City
Copy link
Owner

看博客里写的是(包括例子的说明),常指针指向的对象的值不能变,可以通过非 常指针来修改。

这个说法似乎不太对,应该是常指针指向的对象不能变,即不能先指向a,又指向b。但是是可以直接修改指向变量的值的(只要这个变量不是const)。我这段代码实验了一下,正常运行:

        int d = 2;
        int e = 3;
        int * const ptr3 = &d;

        //ptr3 = &e;//非法
        std::cout << *ptr3 << std::endl;
        *ptr3 = 4;
        std::cout << *ptr3 << std::endl;

不知道是不是这么个情况

是你说的这个样子

@Light-City
Copy link
Owner

看博客里写的是(包括例子的说明),常指针指向的对象的值不能变,可以通过非 常指针来修改。
这个说法似乎不太对,应该是常指针指向的对象不能变,即不能先指向a,又指向b。但是是可以直接修改指向变量的值的(只要这个变量不是const)。我这段代码实验了一下,正常运行:

        int d = 2;
        int e = 3;
        int * const ptr3 = &d;

        //ptr3 = &e;//非法
        std::cout << *ptr3 << std::endl;
        *ptr3 = 4;
        std::cout << *ptr3 << std::endl;

不知道是不是这么个情况

是你说的这个样子

好像例子中是有对应代码的~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants