(5) 以下程序的输出结果是 。 int main() { char *p="abcdefgh ",*r; long *q; q=(long*)p; q++; r=(char*)q; printf("%s\n",r);}
时间: 2024-04-18 19:26:02 浏览: 124
输出结果是 "bcdefgh "。
解析:
在程序中,变量 p 是一个 char 指针,它指向字符串 "abcdefgh " 的首地址。
变量 q 是一个 long 指针,将 p 强制类型转换为 long 指针,并将其赋值给 q。
然后,q 自增 1,即指向下一个 long 类型的内存地址。
最后,变量 r 是一个 char 指针,将 q 强制类型转换为 char 指针,并将其赋值给 r。
最终,printf 函数以字符串的形式输出 r 指向的字符序列,即 "bcdefgh "。
相关问题
#include <stdio.h> #include <string.h> char *ss(char *s) { char *p,t; p=s+1;t=*s; while(*p) {*(p-1)=*p;p++;} *(p-1)=t; return s; } int main() { char *p,str[10]="abcdefgh"; p=ss(str); printf("%s\n",p); return 0;} 程序运行后的输出结果是__________。
程序的输出结果是 "bcdefgha"。
程序中定义了一个函数 `ss`,它的作用是将字符串的第一个字符移到字符串的最后,然后返回字符串的首地址。在 `main` 函数中调用了 `ss` 函数,将一个字符串 "abcdefgh" 传入,然后将函数返回值赋值给指针变量 `p`,最后通过 `printf` 函数输出字符串。因此,程序的输出结果是字符串 "bcdefgha"。
1、下列程序的运行结果是:【 】#include <string.h>char *ss(char *s){ return s+strlen(s)/2; }main( ){ char *p, *str = ”abcdefgh”; p=ss(str); printf(“%s\n”, p);}
该程序的运行结果是 "efgh"。函数 `ss` 中,`strlen(s)` 返回字符串 `s` 的长度,`strlen(s)/2` 则返回字符串 `s` 的中间位置(向下取整),`s+strlen(s)/2` 则返回从字符串 `s` 中间位置开始的子字符串。在 `main` 函数中,`str` 是字符串 "abcdefgh" 的首地址,`p` 被赋值为 `ss(str)` 的返回值,即从 "abcdefgh" 中间位置 "e" 开始的子字符串 "efgh" 的首地址,最后在屏幕上输出该子字符串。
阅读全文