-
首先说一下常见的四个变量:枚举常量、字面常量、 const修饰的常变量
、#define定义的标识符常量
(1)枚举常量(创建一个新类型,然后可以定义新的类型变量,将这些变量的取值定义为一组可能值)
//枚举常量 include<stdio.h> enum Color { RED, YELLOW, BLUE, }; int main() { enum Color color = BLUE; color = YELLOW; return 0; }
(2)字面常量(整型、浮点型、字符串型、字符型)
include<stdio.h> int main() { int a=12,b=012,c=0x12; printf("全部转换为十进制输出:%d %d %d\n",a,b,c); return 0; }
(3) const修饰的常变量
如果一个常量被const修饰,那么它的值就不能再改变,用const修饰变量时,一定要先给变量进行初始化,否则后面就不能进行赋值了
int n=0; const int n=5;
(4)#define定义的标识符常量
#define MAX 100;//define定义宏变量 int mian() { int a = MAX;//MAX=100 return 0; }
#define 标识符 常量 //注意define最后没有分号 #define MAX_VALUE 100 //定义整型变量的值为100
2. 字符与字符串
int main()
{
char arr1[] = { 'a','b','c',0 }; //"abc"='a''b''c''\0'_字符串的结束标志是\0
char arr2[] = "abc";
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c' };
printf("%d\n", strlen(arr1));//3
printf("%d\n", strlen(arr2));//随机值
printf("%d\n", strlen("c:\test\32\test.c"));
//转义字符 \32 32是2个8进制数字 32作为8进制代表的十进制数字,作为ASSII码值对应的字母
// \ddd ddd表示1-3个八进制数字 \xdd dd表示2个十六进制数字
return 0;
3.if语句
int main()
{
int input = 0;
printf("进入清华大学\n");
printf("你要好好学习吗?(1/0)>:");
scanf("%d", &input);
if (input == 0)
printf("回家种地\n");
else
printf("走向人生巅峰\n");
return 0;
}
4. 循环语句
int main()
{
printf("加入华为\n");
int line = 0;
while (line <= 2000)
{
line++;
printf("继续工作%d\n",line);
}
if (line > 2000)
printf("迎娶白富美\n");
return 0;
}
5. 函数的调用
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int num1 = 10;
int num2 = 20;
int sum = 0;
sum = Add(num1, num2);
printf("sum=%d\n", sum);
return 0;
}
6. 数组的使用与访问
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int i = 0;
while (i < 10)
{
printf("%d\n", arr[i]);
i++;
}
//printf("%d\n", arr[4]);//下标的方式访问元素
return 0;
}
下面举个函数调用的例子
比较固定两个数的大小
int main()
{
//对两个固定的数进行比较 //使用函数 对输入的两个数进行比较
int num1 = 10; int x=0;
int num2 = 20; int y=0;
int max = 0; int max=0;
max = Max(num1,num2); printf("请输入a,b的数值:\n");
printf("max=%d\n",max); scanf("%d%d",&a,&b);
return 0; max=Max(a,b);
} printf("较大值是:%d\n",max);
Max(int a,int b)
{
if (a > b)
return a;
else
return b;
}
常规的if语句比较两个数大小如下,大家可以看一下二者的区别
int main()
{
int a = 0;
int b = 0;
printf("请输入a,b的数值:\n");
scanf("%d%d", &a, &b);
if (a > b)
printf("最大值是:%d\n", a); //printf("最大值是:%d\n", a);
else //else if(a>b)
printf("最大值是:%d\n", b); //printf("最大值是:%d\n", b);
//else
//printf("%d");
return 0;
}
7. 按位取反
int main()
{
int a = 0; 正数-原码、补码、反码相同
只要是整数,内存中存储的都是二进制的补码
int b = ~a; 原码(直接按照+-,写出的二进制序列)、反码(原码的符号位不变,其他位按位取反)、补码(反码+1)
printf("%d\n", b); 111111111111111111111111 补
return 0; 111111111111111111111110 反
} 100000000000000000000001 原
8. 前置++与后置++
int main()
{
int a = 10;
//int b = ++a;//前置++,先++,再赋值
//int b = a++;//后置++,先赋值,再++
printf("a=%d b=%d\n", a, b);
return 0;
}
9. 逻辑与&& 与逻辑||
int main()
{
int a = 0;
int b = 0;
int c = a && b;
int c = a || b;
printf("%d\n", c);
return 0;
}
10. 三目运算符
int main()
{
int a = 10;
int b = 20;
int max = 0;
max = (a > b ? a : b); //a>b为真,则赋值给a,为假,则赋值给b
if (a > b)
max = a;
else
max = b;
return 0;
}
11.操作符
int main()
{
int arr[10] = { 0 };
arr[4]; //下标引用操作符 //函数调用操作符 int sum =Add(a,b);
return 0;
}
12. 关键字的使用
int main()
{
typedef unsigned int u_int;//typedef类型定义 -类型重定义
unsigned int num = 20; //register 把变量定义成寄存器变量
u_int num2 = 20;
return 0;
}
特别说明一下static 的用法与#define的用法
static修饰局部变量 局部变量的生命周期变长,
其他文件中的全局变量在本文件中声明extern外部符号,即可使用,
static修饰全局变量时,其他文件中的全局变量在本文件中声明extern外部符号,不可使用,改变了作用域,让静态的全局变量只能在自己所在的源文件内部使用,
外部全局函数一个道理,static改变了函数的链接属性,加了static后,外部链接属性——>内部链接属性。
int main()
{
int i = 0;
while (i < 5)
{
test();
i++;
}
return 0;
}
void test()
{
static int a = 1;//a是一个静态的局部变量,不加static输出5个2,加static输出1 2 3 4 5
a++;
printf("a=%d\n", a);
}
函数的实现
int Max(int x, int y)
{
if (x > y)
return x;
else
return y;
}
宏定义 此处宏定义=上面函数的实现
#define MAX(X,Y)(X>Y?X:Y)
int main()
{
int a = 10;
int b = 20;
int max = Max(a, b);
printf("max=%d\n", nax);
return 0;
}
13. 指针的使用
int main()
{
int a = 10;//4个字节
int *p=&a;//取出a的地址
//有一种变量是用来存放地址的-指针变量
//printf("%p\n", p);
*p = 20;//* - 解引用操作符
printf("a=%d\n", a);
//printf("%p\n", &a);
return 0;
}
int main()
{
char ch = 'w';
char* pc = &ch;
printf("%d\n", sizeof(pc));
//*pc = 'a';
//printf("%c\n", ch);
return 0;
}
int main()
{
double d = 3.14;
double* pd = &d;
*pd = 5.5;
printf("%d\n", sizeof(pd));
printf("%lf\n", d);
printf("%lf\n", *pd);
return 0;
}
14. 创建结构体,结构体=复杂对象+属性
//创建一个结构体类型
struct Book
{
char name[20];//c语言程序设计
short price;//55
};
int main()
{
//利用结构体类型-创建一个该类型的结构体变量
struct Book b1 = { "c语言程序设计",55 };
strcpy (b1.name,"c++"); //数组字符串的修改赋值需要用到strcpy-string copy-字符串拷贝,需要add库函数string.h
struct Book* pb = &b1;
//利用指针pb打印出我的书名和价格
//. 结构体变量.成员
//—> 结构体指针—>成员
printf("%s\n", pb->name);
printf("%d\n", pb->price);
//上面两行与下面注释两行代码是等价的
//printf("%s\n", (*pb).name);
//printf("%d\n", (*pb).price);
printf("书名:%s\n", b1.name);
printf("价格:%d元\n", b1.price);
b1.price = 15;
printf("修改后的价格:%d元\n", b1.price);
return 0;
}