c是正确的,但是在c语言里面a,c,d,都是允许的。a是一个int型变量,b选项中,*a是把a中存储的地址位置上的对应内容取出来,但是a本身就不是指针,也就没有表明其所指的位置存储的是什么类型的数据,所以没有任何意义。而a选项中是将a中的值当做地址数据赋值给了一个指向整型变量的指针,那就相当于把这个值当做地址来用了,这在C里面是允许的,C++不允许。但是要注意,如果a里面只是一个随便的数值的话,p所指向的就是一个之前不知道是做什么的地址位了,这样的操作就很危险。而d选项是将a变量的地址作为一个数值赋值给了int型变量p,那就是说p只是一个存了个地址位置的一般变量了,没有指针功能,和选项a一样,在C里面是允许的,C++不允许。
1,若a为int型变量,则以下哪一个语句是正确的 ()
A.int *p=a; B.int p=*a;C.int *p=&a;D.int p=&a
//A选项是定义指针变量且赋初值,赋的值只能是地址,因此C正确
B选项是定义变量,给变量赋值是数据,但是a是变量,不是指针变量,所以不能加*
D选项要把&去掉
c,int *p=&a;
是正确的。p是一个指向int的指针,把a的地址赋值给p。
c正确,&a指的是地址只能存放在一个指针变量中;
一般讲int * a理解为int * a,是一个指向整型的指针变量int*
选a,p是指针,*p是指针的变量的值。不能把地址赋给整型变量