如有定义char z2][4]="MAT” "LAB,*pz-&z[1][0];则表达式*pz+1 的值是
时间: 2023-06-18 08:08:25 浏览: 98
在这个定义中,"MAT"和"LAB"实际上是两个字符串常量,它们被自动连接在一起形成一个长度为7的字符串数组。因此,z2是一个大小为2x4的字符数组,其内容为:
M A T \0
L A B \0
其中 \0 表示字符串的结束符。
另外,&z[1][0] 是指向 z2[1][0] 的指针,即指向字符串"L"的指针。
因此,*pz 指向 z2[0][0],即字符'M',而 *pz+1 则指向 z2[0][1],即字符'A'。因此,表达式*pz+1的值为字符'A'。
相关问题
如有定义char z[2][4]="MAT” "LAB,*pz=&z[1][0];则表达式*pz+1 的值是
表达式 `*pz+1` 的值是 `'A'`。
解释:`pz` 是一个指向字符数组 `z` 中第二行第一个元素的指针,即 `&z[1][0]`。因此,`*pz` 表示 `z[1][0]`,即字符 `'M'`。在 C 语言中,字符可以被看作整数,其 ASCII 码值为对应字符的整数值。因此,`'M'` 的 ASCII 码值为 77。因此,`*pz+1` 就相当于 77 + 1,即 78,对应的字符为 `'A'`。
char mycmp(char *p1, char *p2) while(*p1&&*p2 &&*p1==*p2) p1++,p2++; return *p1-*p2_; }
这是一个比较两个字符串的函数,函数名为mycmp,接收两个char类型的指针p1和p2作为参数。函数中使用while循环比较两个指针所指向的字符是否相等,如果相等则继续比较下一个字符,直到其中一个指针指向了字符串的结尾或者两个指针所指向的字符不相等为止。最后返回两个指针所指向的字符的ASCII码之差。需要注意的是,在函数中返回值应该是int类型而不是char类型。
```c
int mycmp(char *p1, char *p2){
while(*p1 && *p2 && *p1 == *p2){
p1++;
p2++;
}
return *p1 - *p2;
}
```