首页 > 学院 > 开发设计 > 正文

C语言学习

2019-11-14 11:28:38
字体:
来源:转载
供稿:网友

字符串的输入输出

   puts函数只需要给出字符串参数的地址

/**put_out.c---使用puts()*/#include<stdio.h>#define DEF "i am a #define string"int main(void){	char str1[80]="An array was initialized to me.";	const char *str2="A pointer was initialized to me.";		puts("I'm an argument to puts().");	puts(DEF);	puts(str1);	puts(str2);	puts(&str1[5]);//从数组下标第五个开始输出	puts(str2+4);	return 0;}puts()显示字符串时自动在其后添加一个换行符

翻译程序的第一步首先把源代码中出现的字符映射到源字符集

明显常量#define 的用符号#开头,ANSI标准允许#前有空格或制表符,而且该标准还允许在#和指令的其余部分之间有空格,并且要求#和指令的其余部分不能有空格。

指令的定义域从指令的开始直到文件的末尾  定义符号常量或明显常量预处理器指令从#开始,到其后第一个换行符为止,指令的长度限于一行代码

/*简单的预处理器的例子*/#include<stdio.h>#define TWO 2#define OW "Consistency is the last refuge of the unimagina/tive. -Oscar Wilde"   /*反斜线把这个定义延续到下一行*/#define FOUR TWO*TWO#define PX PRintf("X is %d./n",x)#define FMT "X is %d./n"int main(void){	int x=TWO;	PX;	x=FOUR;	printf(FMT,x);	printf("%s/n",OW);	printf("TWO:OW/n");	return 0;}每个#define行有三部分组成 第一部分指令为#define自身。第二部分为所选择的缩略语,这些缩略语称为宏   宏的名字之间不允许有空格,而且必须遵循命名规则:只能使用字母数字下划线(第一个不能用数字开头)。第三部分称为替换列表或主体,从宏变为最终的替换文本的过程称为宏展开

#define PX printf("x is %d./n",x);

  预处理   宏        主体

预处理器不进行计算,他只是按照指令进行文字替换操作

宏定义中可以含有其他宏

语言符号

  系统把宏的主体当作语言符号(token)类型字符串,而不是字符型字符串

在#define中使用参数  ,可以创建外形和作用都相似的类函数宏,宏的参数也用圆括号括起来

下面是一个类函数宏定义的示例:

#define SQUARE(x)  x*x

在程序中可以这样使用  z=SQUARE(2);    //z=4

/**mac_arg.c 带有参数的宏*/#include<stdio.h>#define SQUARE(x) x*x#define PR(X) printf("The result is %d./n",X)int main(void){		int x=4;	int z;	printf("x=%d/n",x);	z=SQUARE(x);	printf("Evluating SQUARE(x):");	PR(z);	z=SQUARE(2);	printf("Evluating SQUARE(2):");	PR(z);	printf("Evluating SQUARE(x+2):");	PR(SQUARE(2+x));	printf("Evluating 100/SQUARE(2):");	PR(100/SQUARE(2));	printf("x is %d./n",x);	printf("Evluating SQUARE(++x):");	PR(SQUARE(++x));	printf("After incrementing,x is %x./n",x);		return 0;}

typedef简介

        typedef工具是一种高级数据特性,他使用户能够为某一类型创建用户的名字,与#define有三个不同之处

与define不同,typedef给出的符号名称仅限于对类型,而不是对值。解释由编译器进行,而不是预处理器执行 虽然他的范围有限,但在其受限范围内,typedef比#define灵活    该定义如果是在一个函数的内部,那么他的作用域就是局部,定义在函数的外部他就是全局作用域


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表