搜索
首页 电脑/网络 程序设计 C/C++

C语言

  # include struct student { char name[8]; float grade[5]; float sum; } temp, * p; main ( ) { p = &temp; strcpy ( temp。
  name, "Casanova" ); printf (“%c %c\n”, *p->name+2,*(p->name+2)); } A) e s B) s s C) E s D) a n 答案是C,求解释,另 # include 是什么意思啊?。
  

全部回答

2008-01-06

0 0
    *p->name是取出了temp。name里的第一个字符,也就是"Casanova"里的"C",然后,"C"+2也就是先把"C"转成ascii码,然后加2,再用字符输出,也就得到了大写E 同理,*(p->name+2)取出的是temp。
  name里的第三个字符(p->name是指向"C"的地址,+2的话就是再向后偏移两个地址),所以就是"s" #include 是导入头文件,使得在文件string。  h中的strcpy()函数可用,在这里,该函数的作用是把一个String复制给一个char数组。
  

2008-01-06

43 0
# include 中 string.h 是一个文件名,在C语言中,所编写的程序保存后就是一个文件,在这个文件中有你所需要的 函数,所以你开头必须要 包含这个文件,否则这个strcpy 函数用不了。

2008-01-06

55 0
    要从算符的优先级分析,用循序渐进的方法,就可以分析复杂的表达式 *p->name+2 首先是->,结果是p->name:字符指针,指向的是temp。
  name,就是"Casanova"。分析时用一个自己加的指针变量char *ppp1 来表示,得到 ppp1 等于 p->name 等于 "Casanova"; 于是*p->name+2变形为 *ppp1+2 先执行高优先级算符* ,*ppp1是取字符指针ppp1所指的字符,就是第一个字符“C”。
    分析时用一个自己加的字符变量char ccc1 来表示,得到 ccc1等于*ppp1等于'C'。 最后的结果就是ccc1+2, 'C'+2 = 'E' 用同样的方法分析,*(p->name+2),由于加了括号,改变了优先级,所以结果就不同了 第一步:执行“->”, ppp1 等于 p->name 等于 "Casanova"; 变形为 *(ppp1+2) 第二步:因为有括号,执行括号中的“+”,自己加的指针变量char *ppp2 来表示, ppp2 = ppp1 + 2, 指向"Casanova"的第2号字符's',ppp2 = "sanova" 第三步:“*”,*ppp2,就是's'了。
     #include 是为了使用copy字符串的strcpy函数 。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
C/C++
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
C/C++
VB
数据库
汇编语言
JAVA相关
VC++
C#/.NET
其他编程语言
C/C++
C/C++
举报
举报原因(必选):
取消确定举报