有定义和赋值“int a[5]={1,2,3,4,5),*p=a;”,以下表达式中有语法错误的是B.*p++ A.*a++ D.(*p)++
时间: 2024-03-19 10:41:48 浏览: 32
以下表达式中有语法错误:
B. `*a++`
这个表达式中,`a` 是一个数组名,不能对其进行自增操作。只有指针类型可以进行自增操作。
其余三个表达式都是合法的指针表达式,可以在 C 语言中正常编译运行:
A. `*p++`: 先取出 `p` 指向的值,然后将 `p` 自增一位,指向下一个元素。
D. `(*p)++`: 先取出 `p` 指向的值,然后将该值加一。注意,加一操作是作用于指向的变量本身,而不是指针 `p`。
相关问题
int a=0;int *p = a; 和 int *p = &a; 这里int *p=a;与int *p=&a;有什么区别?
在C++中,int a=0; 表示定义了一个整型变量a并将其初始化为0。
而 int *p = a; 表示将整型变量a的值赋值给一个指向整型数据的指针p。但是这是错误的,因为指针变量p需要存储一个地址,而不是一个整型值。因此,这个语句会编译失败。
相反,int *p = &a; 表示将整型变量a的地址赋值给一个指向整型数据的指针p。这是正确的用法,并且p指向的是整型变量a的地址。
因此,int *p = a; 和 int *p = &a; 语句之间的区别是,前者将整型值赋值给指针变量,而后者将整型变量的地址赋值给指针变量。
设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是______。 A *p=*q; B p=q; C *p=&n1; D p=*q;
与`n2=n1;`语句等价的是`*p=*q;`语句。
`*p`表示指针p指向的变量的值,`*q`表示指针q指向的变量的值,因为`q=&n1`,所以`*q`就是n1的值,因为`p=&n2`,所以`*p`就是n2的值,所以`*p=*q`就相当于`n2=n1`。
其余选项的意义如下:
- A *p=*q; 表示将指针q指向的变量的值赋值给指针p指向的变量。
- B p=q; 表示将指针q的值赋值给指针p。
- C *p=&n1; 表示将指针p指向n1的地址。
- D p=*q; 表示将指针q指向的变量的值赋值给指针p。