如有下面的语句说明, 则正确的赋值语句是 ( )。 char a[10], *p=a; A. a[10]=”VC++”; B. a=”VC++”; C. p=”VC++”; D. *p=”VC++”;
时间: 2024-05-31 11:09:22 浏览: 13
正确的赋值语句是 D. *p="VC"。
解析:
- 选项A试图给a数组第11个元素赋值,但是数组a只有10个元素,这是越界访问,编译器会报错。
- 选项B试图给数组a赋值一个字符串,但是数组名a表示整个数组,是一个常量指针,不能被修改,编译器也会报错。
- 选项C试图给指针p赋值一个字符串,但是p指向的是数组a的第一个元素,是一个常量指针,不能被修改,编译器同样会报错。
- 选项D是正确的赋值语句,它通过指针p修改了数组a的第一个元素的值,将其赋值为字符串"VC"。
相关问题
假设定义char a[10] 和char *p=a 那么赋值语句正确的是a[10]="Tur C"
那么,赋值语句正确的是:
char a[10] = "Tur C";
或者是:
char *p = "Tur C";
但是不能这样写:
a[10] = "Tur C";
因为数组下标从0开始,a[10]实际上是数组a的第11个元素,而数组a只有10个元素,所以访问超出了数组的范围。
另外,如果你想用指针p来赋值,你需要把它指向一个合法的内存地址,例如:
char *p = a;
这样就可以使用p来访问数组a的元素了。
如有下面的语句说明, 则下面赋值表达式合法的是 ( )。 int i, *p; A. *p=*i B. p=i C. p=&i D. *p=&i
正确选项是 B。
语句解释:
- `int i, *p;` 声明了一个整型变量 `i` 和一个指向整型的指针 `p`。
- `*p=*i` 是错误的,因为 `*p` 表示指针 `p` 指向的内存地址的值,而 `*i` 表示整型变量 `i` 的值,两者类型不匹配。
- `p=` 是错误的,因为没有给 `p` 赋值,指针 `p` 指向的内存地址是未知的。
- `p=i` 是正确的,将整型变量 `i` 的地址赋值给指针 `p`,使 `p` 指向 `i` 所在的内存地址。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)