6-预处理和关键字

1-宏函数.c

#include <stdio.h>

#define PRINT   printf("helloworld\n")    //无参宏函数
#define P(s)    printf("%s", s)           //有参宏函数

#if 0
/*宏函数和自定义函数优缺点
宏函数优点:1、执行效率高  2、节省空间
自定义函数优点:1、编译效率高 2、安全
*/
#endif

#define SQR(X) (X) * (X)

int main()
{
	PRINT;
	P("hello\n");
	//P(1);

	int m = 1, n = 2;
	printf("%d\n", SQR(m + n));    //替换成1 + 2 * 1 + 2

	return 0;
}

2-static.c

#include <stdio.h>

void add()
{
	static int i = 0;   //静态变量,存放在静态数据区,函数结束不会被释放  栈空间在函数结束后会被释放
	i++;
	printf("i = %d\n", i);
}

int main()
{
	int i;
	for (i = 0; i < 3; i++)
	{
		add();
	}

	return 0;
}

3-const.c

#include <stdio.h>

char *mystrcpy(char *str, const char *ptr)   //防止在函数内部修改指针指向的内存的值
{
	char *t = str;

	while ((*str++ = *ptr++) != '\0');

	return t;
}

int main()
{
	int num = 1;

	//就近原则
	const int *p1 = &num;      //指针p1指向的内容不能修改,p1可以修改
	p1++;
	//(*p1)++;
	
	int const *p2 = &num;    //等价于const int *p1
	int *const p3 = &num;    //指针p3不能修改,但是p3指向的内容可以修改
	//p3++;
	(*p3)++;

	const int *const p4 = &num;  //指针p4不能修改,同时p4指向的内容也不能修改

	char str[32] = "helloworld";
	char ptr[32] = "12345";
	mystrcpy(str, ptr);
	printf("%s\n", str);

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值