有语句:int a[10];则( )是对指针变量p的正确定义和初始化。
A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;
a已经是一个指针了,不需要在取地址了
c语言数组名表示数组的首地址,也就是说
int a[10] = {};
a与a[0] 的地址是一样的。
&a与&a[0]也是一样的。
当指针指向数组时, 指针需要指向数组的首地址
int *p;
p = a;
p = &a[0]
是正确的。不要写成 p = &a,这样是错误的,因此a就代表了首地址,再取地址就错了,虽然有些编辑器也能运行,但是这样在逻辑上世纪错误的。
D应该改成int *p=&a[0]
int *p=&a 这里取到的地址是数组指针,而不是int 指针
D错误,因为这种写法取到的是整个数组的地址,也就是&a其实类型是数组指针,而不是int指针。
这个题目上就把答案给出来了。。。
B
用户登录可进行刷题及查看答案
登录后提交答案