C语言 宏定义、数组

C语言 宏定义、数组

宏定义

介绍
1)宏定义就是用一个标识符来表示一个字符串,如果后面代码中出现了该标识符,就全部替换成指定的字符串;
2)定义格式:
#define 宏名 字符串
宏名是一种标识符,遵从宏定义命名规则;字符串可以是数字,表达式,if语句,函数等,且不需要双引号标记;
3)在预处理阶段,对程序中出现所有宏名,预处理器都会用宏定义中的字符串去替代,这称之为宏替换或宏展开;
示例:

#include<stdio.h>
#define M(a) a*a+1
void main(){
	int a = 2;
	printf("%d\n",M(a)*M(a));//9  
	//展开为 2*2+1*2*2+1
}

细节:
a、宏定义不是说明或语句,在行末不必加分号如果加上分号则连带分号一起替换宏名;
b、宏定义必须写在函数之外,其作用域在程序起始到结束,遇到#undef时则该宏定义域结束;

#define M 5
void fun(){
	printf("%d\n",M);
}
#undef M//该宏定义的作用域只存在于该函数

c、宏定义允许嵌套,可以在宏定义的字符串中使用已经定义过的宏名;
d、宏定义可以定义数据类型;
4)带参宏定义
a、定义形式:#define 宏名(形参列表) 字符串(可使用形参);
b、调用形式:宏名(实参列表);
c、在展开过程中不仅要进行字符串的替换,实参也要对形参进行替换;
细节:
1、带参宏定义中不会为形参分配内存,因为形参不必指明数据类型;
2、宏名以形参列表之间不能有空格,否则会将形参列表也作为字符串内容;
3、字符串中的形参通常会加上(),避免出现错误;

数组

介绍:
1、可用于存放同一类型的多个数据;
2、数组也是一种数据类型,构造类型;
3、存放的数据叫元素,数组的开始下标为0;最后一个元素的长度为数组长度-1;
4、定义格式:
a、int a[3];a[0]=10;a[1]=11;a[2]=12;
b、int a[3]={10,11,12};
c、int a[]={10,11,12,13};
5、访问数组元素格式:数组名[下标];
注意
数组名代表数组的首地址,数组的各元素地址连续分布,且有自己的地址;数组一旦创建长度不可变;不为数组赋予初值,则系统默认为0(全局),否则系统分配(局部);数组的下标必须在0-数组长度-1之间,否则报错;数组属于地址传递,所以在函数调用进行操作时会改变数组的值;

字符串

介绍:
1)字符串就是被双引号标记的多个字符,C语言中没有专门的字符串变量,用字符数组表示字符串;
2)定义方法:
char s1[4] = {‘a’,‘b’,‘c’};
char s2[]={‘a’,‘b’,‘c’,’\0’};
char s3[4]=‘abc’;
cahr s4[]=‘abc’;
char* s5=‘abc’;

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值