请懂c语言的帮忙解释一下注释后面加问号的语句啊。。。谢谢啊!!!
#include<stdio.h>#include<stdlib.h>#include<string.h>#defineszSTR64//??????#definefil...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szSTR 64 //??????
#define fileDB "c:\\contact.txt"//这是宏定义,相当于替换。在你的程序里有fileDB时,会自动替换成"c:\contact.txt"。意义在于方便修改,假如你程序里要使用很多次contact.txt,假如文件名改了,你就要在程序所有用到的地方都要修改。但如果定义了fileDB,你只需要在这一处地方修改一次即可。
struct CONTACT
{
char name[szSTR]; /*中括号部分代表什么?????*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;//typedef声明新的类型名代替已有的类型名,也就是说允许由用户为数据类型取“别名”。例如:typedef int INTEGER 即此后就可用INTEGER来代替int作整型变量的类型
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF //?????????
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask) //CON * s是定义的指针吗,变量是CON还是*s?????
{
if(mask & BNAME) { printf("请输入学生姓名:"); scanf("%s", s->name); }//if语句中是什么意思?????????
if(mask & BUNIT) { printf("请输入工作单位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("请输入联系电话:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("请输入电子邮件:"); scanf("%s", s->mail); }
}/*end input*/ 展开
#include <stdlib.h>
#include <string.h>
#define szSTR 64 //??????
#define fileDB "c:\\contact.txt"//这是宏定义,相当于替换。在你的程序里有fileDB时,会自动替换成"c:\contact.txt"。意义在于方便修改,假如你程序里要使用很多次contact.txt,假如文件名改了,你就要在程序所有用到的地方都要修改。但如果定义了fileDB,你只需要在这一处地方修改一次即可。
struct CONTACT
{
char name[szSTR]; /*中括号部分代表什么?????*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
typedef struct CONTACT CON;//typedef声明新的类型名代替已有的类型名,也就是说允许由用户为数据类型取“别名”。例如:typedef int INTEGER 即此后就可用INTEGER来代替int作整型变量的类型
#define BNAME 1
#define BUNIT 2
#define BTELE 4
#define BMAIL 8
#define BFULL 0xFF //?????????
int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};
void input(CON * s, int mask) //CON * s是定义的指针吗,变量是CON还是*s?????
{
if(mask & BNAME) { printf("请输入学生姓名:"); scanf("%s", s->name); }//if语句中是什么意思?????????
if(mask & BUNIT) { printf("请输入工作单位:"); scanf("%s", s->unit); }
if(mask & BTELE) { printf("请输入联系电话:"); scanf("%s", s->tele); }
if(mask & BMAIL) { printf("请输入电子邮件:"); scanf("%s", s->mail); }
}/*end input*/ 展开
展开全部
#define a XXX
其实就是把XXX赋值给a,相当于a = XXX;
这段可以改写成为
int szSTR = 64;
struct CONTACT
{
char name[szSTR]; /*中括号部分代表什么?????*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
这样应该就明白了吧
突然看到你那边后面写文件夹的地方不是有注释么,其实是一个意思,他说文件改一次就可以,这里数组的大小也是一样的
其实就是把XXX赋值给a,相当于a = XXX;
这段可以改写成为
int szSTR = 64;
struct CONTACT
{
char name[szSTR]; /*中括号部分代表什么?????*/
char unit[szSTR];/*工作单位*/
char tele[szSTR];/*电话*/
char mail[szSTR];/*mail*/
};
这样应该就明白了吧
突然看到你那边后面写文件夹的地方不是有注释么,其实是一个意思,他说文件改一次就可以,这里数组的大小也是一样的
追问
嗯,这里明白了。。。后面那几个???能不能在给解释一下下.......
追答
另外一个define也是一样的意思
你说的那个CON *s 就是定义了一个CON类型的指针,我感觉你这个CON应该是上面的那个CONTACT,在这个结构体里面保存输入进来的信息
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#define szSTR 64 ——行话叫“宏定义szSTR为64”。其实呢,就是告诉编译器,在编译之前将你的代码中的所有szSTR用64替换。这下你明白了吧,char name[szSTR]; 中的szSTR就是64,编译前编译器把char name[szSTR];就替换成了char name[64]; 。CON * s声明的s是CON *型指针;不要把*与p算在一起,*p不是变量,你见过以*开头的标识符吗?
追问
嗯嗯,前面都明白了,CON * s声明的s是CON *型指针;
是什么情况,没见过这个类型啊,还有这个语句#define BFULL 0xFF 中0xFF 什么意思?
还有最后一个if(mask & BNAME) 怎么理解
追答
C/C++是允许自行定义类型的,如结构体;如果CON是算定义的结构体类型,那CON和*一起修饰p是指向CON型结构体的指针变量。0xFF是16进制的255啊,0x开头的常数都是16进制表示法。if(mask & BNAME)中的mask & BNAME是两个变量或一个变量与一个常数进行“按位与”操作,写在if的 ()中就是操作结果不为0的意思,即和if((mask & BNAME)!=0)等价。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
请去了解一下什么叫宏,什么叫预处理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-03-12
展开全部
判断语句?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询