声明指针的方式有什么区别?

0 c++ pointers declaration

这两种方式有什么变化呢?

int *ptrint* ptr

两者的工作方式相同,但是对于我的代码或性能,我的程序有差异吗?

#include <iostream>

using namespace std;

int main() {

    int a(5);
    int *ptr1 = &a;
    int* ptr2 = &a;

    cout << "a:    (0x" << hex << uppercase << (uintptr_t)&a << ") = " << dec << a << endl;
    cout << "ptr1: (0x" << hex << uppercase << (uintptr_t)ptr1 << ") = " << dec << *ptr1 << endl;
    cout << "ptr2: (0x" << hex << uppercase << (uintptr_t)ptr2 << ") = " << dec << *ptr2 << endl;
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a:    (0x61FE0C) = 5
ptr1: (0x61FE0C) = 5
ptr2: (0x61FE0C) = 5
Run Code Online (Sandbox Code Playgroud)

lit*_*adv 5

绝对没有。空白将被忽略。

哪里对齐是风格的决定,基于团队惯例和规则(如果有)或个人喜好,主要是为了提高代码的可读性。它不会改变代码的编译方式。