LZ的写法是不可以的,可以写成int *p=&a;p=&b;也就是可以改变指针的指向,前提是p不是常指针(指针本身是常量,众所周知,常量的值是不能改变的),也就是这么写“ int *const p=&a;”,那就不能再“p=&b;”即常指针指向不能再改变了
可以,不过第二次定义时,用到p的要加大括号{},两个变量同名,但作用域不同,物理空间上也不同
例如
#include
void main()
{ int a=1,b=2;
int *p=a;
{
int *p=b;
printf("第二次定义的*p=%d\n",p);
}//此时第二次定义的*p作用域为{}内
printf("第一次定义的*p=%d\n",p);
}
输出结果为
第二次定义的*p=2
第一次定义的*p=1
你的两个问题都是不能的,道理很简单,因为你定义了两个相同名字的变量,这样就会有命名冲突,不但指针,任何类型都变量这样定义都是错误的.除非是在不同的函数里面