当前位置: 首页 > 工具软件 > P* > 使用案例 >

关于int* p, int *p, int* p = &a, *p = a的区别

苏晓博
2023-12-01

一.int* p和int *p

首先这2种写法都是正确的,首先是int* p, int *p,这两个语法困扰了好久,我一直以为是C和C++指针定义上的不同,直到看到了https://www.stroustrup.com/bs_faq2.html#whitespace,这是C++本人的说明,大概信息是两者只是书写形式上的不同,表达了两种语言的强调点的不同,并没有对错之分。

C语言写者更倾向于: int *p,更强调语法,说明*p指向一个int类型

C++语言写者:int* p,更强调类型:p是一个指向int的指针类型

二.int* p=&a;和int *p =a和int *p; *p =a(p = &a);

首先这三种写法不都是完全正确的,第二种写法在一定条件下是正确的,而第一种和第三种写法是可以相互替换的;

(1)int* p = &a,是C++中的写法,在C++PRIMER 5th中写成了int *p = &a,作为刚才c转过来的小白,看到这个不禁对我之前的学习充满了怀疑。

首先两种写法上没有对错(如一中所述)所以int* p = &a这种更方便我个人理解,是定义了一个指向int的指针 p,这个语句是给p赋值,而不是给*p赋值(这句话解决了我的疑惑点)也就是将a的地址取出赋给p而不是*p,结束。

(2)int *p = a是一种不一定对的写法,因为如果它完全正确就和(1)说的冲突了,所以这是只有a是一个数组时,a代表了数组的首地址,此时这一语句才成立。也就是等同于int *p =&a[0]。

(3)这是我接触的最早的指针的定义,也是我最能理解的方式。int *p定义了一个指针,*p =a将指针指向a(或者是&a将a的地址取出赋给p)

编程菜鸟,如有纰漏,请大神直接指出狠狠批评。

 

 类似资料: