int* p和int *p真的有区别吗?前者声明的是地址,后者声明的是指针变量?

如题1234567891234567891234567896497674

没区别

两种写法是一样的。
推荐写成 int *p,否则容易写错,比如:

int* p,q;
int *p,*q;
第一行写法,q只是int型,不是int*类型,容易误解;而第二行就不会理解错误

没有,编译的时候空格被忽略了,写成int*p也是一样

没区别,星号不区分紧跟着int还是不跟,只要有,不管你中间几个空格.
有区别的是 int const *p和 int * const p,前者为常量指针(不能通过指针来改变变量的值,可以改变指针的指向),后者为指针常量(不能改变指针的指向,可以改变变量值),这两个是不同的,差别很大

int* p;表示定义一个类型p为int型指针。int *p;表示p是一个指针,指向类型为int(如果指向其他类型比如float就会报错),简单理解,表示指针p是int类型

int* a,b; 等价于 int *a;int b;而不等价于 int *a; int *b;
为了避免出现这样的歧义,很多书上都进行了规范处理,统一将星号靠近变量名