q = p;:用p给q赋值。类型不对。p是指向int的指针,q却是指向float的指针,类型不同不能赋值。除非强制转换。p = NULL; :p是一个指针,但它不指向任何变量,多以答案对的。也就是暂时先不给它赋值,以后再赋值。如:int a = 0, *p;p = NULL;...p = &a;q = new : 语法错误。...
int a = 3;int main(){ int a = 4;cout << ::a << endl; // 这时输出的是全局变量a cout << a << endl; // 这时输出的是局部变量a return 0;} 当他作为二元作用域分辨运算符时,主要是用于在源文件中绑定类的成员函数,如:a.h class a { public:void fun1();int fun2();p...
? 1 结果是:8 2 分析 int a[]={1,3,5,7}; int *p[3]={a+2,a+1,a};有语法错,已改正! int **q=p; printf("%d\n",*(p[0]+1)+ **(q+2)); p[0]指向a[2],p[0]+1指向a[3]=7,q指向p[0],q+2指向p[2],p[2]指向a[0]=1,因此7+1=8。{int...
确实存在本质区别。int (*p)[4]意味着p是一个指向包含四个整数元素数组的指针,而int *p=a表示p是一个指向整数的指针,它指向了整数a。这种类型的差异会导致指针运算的偏移量不同。例如,假设int *p = a; int (*q)[4] = &a; 这里p和q的值肯定是一样的,但是指针指向的类型不同,p指向的...
合法 与 不合法 是编译器 对 程序语句 的 基本检测 在C里 这几句 都 合法 在 高级语言里, 为了帮助程序员检测 出 程序 中 更多的 错误,加入了 更多的 检测 这些 检测 是不是 需要执行, 大多数 编译器里能设置。。p+q; p*q; p%q; 对于 程序员来说 ,这几个 指针运算 没有 任何...
a=p==&m;由于==的优先级高于=,所以等价于:a=(p==&m);意为,判断p是否等于&m,并将判断的结果保存到a中p,q为int指针,表达式p==&m的值为假,所以a赋值0;(-*p)/(*q)+7的值为-4/6+7结果为7,因为-4/6的结果为0,所以输出结果应该是:0 7建议你看一下C语言的运算符优先级...
n2=n1 是将n1的值赋值给n2,与变量地址无关,因此去除所有对指针操作不带*的选项 B D C.*p=&n1;是将n1的地址值赋值给p,即p指向n1,与n2无关。 &是取变量地址操作符 A.*p=*q; 正确,通过n1的地址q,提取数据n1的值,赋值给由p所指向的n2的地址 指针变量中存的是地址值,通过地址...
选D.A.p是一个指针,不能给它赋一个整型的值1B.*q仍然是一个指针,*q就是p.所以也不能给它赋一个整型的值.C.q=p;q是个二级指针,p是一级指针,不能把一级指针赋给二级指针.*p=5,即给n赋值为5,正确.D
不知你说的pk,pm,为何物...举个例子:int a[5]={1,2,3,4,5};int *p;p=&a[2];++*p;//等同于++a[2],使p指向的值加1++p;//等同于p=a[2+1],使p指向目标数组中的下一个元素a[3]p=*q,意思是说,将q指针指向地址的值传给p指针指向的地址,此时p和q是指向不同地址的(当然...
就是说,只允许,指针地址赋值给指针地址,变量值赋值给变量值。了解这些,就可以分析了:int *p,*q; q=p; //对的,因为p,q都是指针,可以相互赋值 依据 A,C原则 int a,*p,*q; p=q=&a;//对的,p,q指针表示地址,根据B原则,&a也是地址,因此可以进行赋值 int a,*p,*q; q=&a...