设 char s[10]="abcdef"; *p = s; 以下不正确的表达式是() A. *p ='w'; B. s[2] = s[4]; C. s = s + 5; D. p = s + 5;
时间: 2024-05-18 12:13:32 浏览: 106
abcdef.zip_ABCDEF222_三角形排列
选项 C 和 D 都不正确。
首先,定义了一个长度为 10 的字符数组 `s`,并将其初始化为字符串 `"abcdef"`。然后,定义了一个字符指针 `p`,并将其赋值为指向数组 `s` 的第一个元素的地址。
因为指针 `p` 指向了数组 `s` 的第一个元素,所以可以使用 `*p` 来表示数组 `s` 的第一个元素,即字符 `'a'`。
选项 A 中的赋值语句 `*p = 'w';` 将字符 `'w'` 赋值给了指针 `p` 所指向的内存地址,即数组 `s` 的第一个元素。这样,数组 `s` 的内容变成了 `"wbcdef"`,选项 A 正确。
选项 B 中的赋值语句 `s[2] = s[4];` 将数组 `s` 的第 4 个元素(即字符 `'e'`)赋值给了数组 `s` 的第 2 个元素(即字符 `'c'`)。这样,数组 `s` 的内容变成了 `"abedef"`,选项 B 正确。
选项 C 中的表达式 `s = s + 5;` 将数组 `s` 的地址加上 5,然后将结果赋值给数组 `s`。但是,数组名 `s` 是一个常量指针,不能修改其值。因此,选项 C 不正确。
选项 D 中的赋值语句 `p = s + 5;` 将数组 `s` 的地址加上 5,然后将结果赋值给指针 `p`。这样,指针 `p` 就指向了数组 `s` 的第 6 个元素,即字符 `'f'`。因此,选项 D 不正确。
因此,不正确的表达式是选项 C 和 D。
阅读全文