char *o = a与char *o=char *a的区别
时间: 2023-07-23 09:56:50 浏览: 154
`char *o = a` 是将指针 `o` 指向了指针 `a` 指向的内存空间,或者说是把 `a` 的地址赋值给了 `o`,这样指针 `o` 和指针 `a` 指向的是同一片内存空间,两者相互影响。
而 `char *o=char *a` 是一个语法错误,应该写成 `char *o = a`,表示将指针 `o` 指向指针 `a` 指向的内存空间。如果写成 `char *o=char *a`,编译器会提示语法错误。
相关问题
char*a =china;等价于char*a;*a="china";
不完全正确。表达式 `char *a = "china";` 表示创建一个指向字符串常量 "china" 的字符指针 `a`。这样的指针可以用于访问字符串中的字符。而表达式 `char *a; *a = "china";` 是错误的,因为没有为指针 `a` 分配内存空间,直接对其进行解引用赋值会导致未定义的行为。正确的写法应该是 `char *a; a = "china";`,这样可以将指针 `a` 指向字符串常量 "china"。
char* p="helloworld";char* s='o'; s-p=什么
在你提供的代码中,存在一个小错误。当你定义 `char* s = 'o';` 时,应该使用双引号 `"` 而不是单引号 `'`,因为我们需要将 `'o'` 视为字符串而不是字符。所以正确的代码应该是 `char* s = "o";`。
现在假设我们有以下代码:
```c
#include <stdio.h>
int main() {
char* p = "helloworld";
char* s = "o";
ptrdiff_t diff = s - p;
printf("s - p = %td\n", diff);
return 0;
}
```
在这个例子中,我们使用了指针 `p` 和 `s` 分别指向字符串 "helloworld" 和 "o"。通过计算 `s - p`,我们得到两个指针之间的偏移量。这个偏移量的类型是 `ptrdiff_t`,可以使用 `%td` 格式化输出。
输出结果为:
```
s - p = 7
```
所以 `s - p` 的值是 7。
阅读全文