char a[10]="6789",*p;p=a;printf("%s",p);输出什么
时间: 2023-02-09 21:19:58 浏览: 78
这个程序的输出是 "6789"。
char a[10]="6789" 声明了一个字符数组 a,并初始化为 "6789"。*p 声明了一个字符指针 p。然后将 p 赋值为 a,也就是将 p 指向 a 数组的首地址。最后,printf("%s",p) 会输出从 p 开始的字符串,也就是 a 数组中的 "6789"。
注意,%s 格式化字符串输出时,会一直输出字符直到遇到第一个 NULL 字符为止。在这个程序中,a 数组中没有 NULL 字符,所以会输出整个数组中的字符。
相关问题
int a = 10; char *p = NULL: p = &a; printf(p);输出是什么
这段代码会出现编译警告,因为 printf 函数中使用了 char * 类型的指针 p,但是传入的参数是 int 类型的变量 a 的地址,这会导致类型不匹配。
即使忽略编译警告,程序也会出现运行时错误,因为 printf 函数在执行时会按照字符类型解析传入的参数,但是传入的参数是一个整型变量的地址,因此会导致输出结果不确定,甚至会导致程序崩溃。
因此,这段代码的输出结果是不确定的,应该避免这种类型不匹配的操作。如果想要输出变量 a 的值,应该使用以下代码:
```
int a = 10;
printf("变量 a 的值为:%d\n", a);
```
或者使用以下代码将变量 a 的地址强制转换为 void* 类型指针,然后输出该指针的值(注意不要使用 %s 或者 %c 格式化字符):
```
int a = 10;
void *p = (void *)&a;
printf("变量 a 的地址为:%p\n", p);
```
char *s;*p=s;
根据提供的引用内容,`char *s`是一个指向字符的指针,`*p=s`是将`s`指向的字符赋值给指针`p`所指向的内存地址。但是在这个表达式中,指针`p`并没有被初始化,因此这个表达式会导致未定义的行为。正确的做法应该是先为指针`p`分配内存,然后再将`s`指向的字符赋值给`p`所指向的内存地址。
示例代码如下:
```c
char *s = "Hello World"; // 定义一个指向字符串的指针s
char *p = malloc(sizeof(char)); // 为指针p分配内存
*p = *s; // 将s指向的字符赋值给p所指向的内存地址
printf("%c", *p); // 输出:H
free(p); // 释放p所指向的内存
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)