C语言_定义常量(完)

常量与变量的区别:

常量:可读不可写。
变量:可读可写。

1.变量的定义:

常量定义的两种方法:

const int b = 10;     //定义一个int类型的常量b为10   [1]

#define Pai 3.14159;    //定义一个常量Pai  [2]

常量不是左值(放在赋值号左边的值),所以不能给赋值。

define相当于替换,此时Pai只是相当于3.14159的别名,在编译期间用3.14159去取代Pai的值.
define的本质是替换,所以不能加;号,加上分号会一起被替换

举例:

#include 
void main(){
     
	int a = 10;
	a = 100; //变量a可以再次赋值进行修改。
	const int b = 10; 
	// b = 100; //常量b不能再次赋值进行更改。
	printf("this is a: %d\n",a);
	getchar();
}
#include 
void main(){
     
	#define a 100
	printf("a is :%d\n",a);
	printf("b is :%d\n",a*a);
	getchar();
}

1.案例:易语言实现原理

原理:

#include 
#define 返回值 void
#define 主函数 main
返回值 主函数(){
     
	printf("hello");  //正常运行
	getchar();
}

实战:

gcc不行,gcc必须是英文字母,vs可以

define.h

#include 
#include 

#define 给老夫跑起来 main
#define 四大皆空  void
#define 打印 printf
#define 给老夫执行 system
#define 你好天朝 "hello china"
#define 记事本 "notepad"

void go(){
     
	system("tasklist");
}
#define 查看进程 go();

data.c

#include "define.h"

四大皆空 给老夫跑起来(){
     
	打印(你好天朝);
	给老夫执行(记事本);
	查看进程  //去掉分号
}

2.案例: 代码混淆加密

源程序:

#include 
#include 
void main(){
     
	printf("哈喽,我二档");
	system("notepad");
	getchar();
}

使用define原理进行替换后(实现加密效果):
1.h文件

#include 
#include 

#define _ void
#define __ main
#define ___ (
#define ____ )
#define _____ {
     
#define ______ }
#define _______ printf
#define ________ system
#define ____2____ ;
#define ____3____ "halo,ha"
#define ____2____ "notepad"
#define ____2____ ;
#define ____2____ ;

data.c

#include "1.h"
_ __ ___ ____ _____ _______。。。。。。。。。。。。。______ 

1.练习题:

#include 
//第一种
#define name "张三"
#define age 30
//第二种
const char namestr[] = "张思"; //namestr是几个字符拼在一起,char就是字符。
const int ageint = 40;

void main(){
     
	printf("我的名字是:%s,年龄是%d\n",name,age);
	printf("姓名是:%s,年龄是:%d\n",namestr,ageint);
	getchar();
}

2.练习题:变量数据交换

low

int a = 10;
int b = 20;
int temp;

temp = a;
a = b;
b = temp;
printf("\n a:%d,b:%d",a,b);

high:

int a = 10;
int b = 20;

a = a+b; //乘除同理
b = a-b;
a = a-b;

你可能感兴趣的:(C语言从入门到精通)