C语言基础知识
小白必备
4.变量 ,常量
不变的值,在c语言中用常量表示,反之,用变量所表示。
变量分类:
局部变量 全局变量
#include<stdio.h>
int num2 =20;//全局变量一定在代码块({})之外的变量
int main()
{
int num1 =10;//局部变量在代码块({})内部的变量
return 0;
}
当局部变量和全局变量同名时,局部变量优先。
eg.
#include<stdio.h>
int num1 =200;
int main()
{
int num1 =10;
printf("%d\n",num1);//局部变量和全局变量的名字建议不要相同,容易产生误会,产生bug
return 0;
}
结果:10
变量的使用:
eg. 两个数的相加
#include<stdio.h>
int main()
{
int num1=0;
int num2=0;
int sum=0;
//输入数据----使用输入函数scanf
scanf("%d%d",&num1,&num2);//取地址符&
sum=num1+num2;
printf("%d",sum);
return 0;
}
变量的作用域和生命周期
作用域:限定这个变量可用性的代码范围
1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域的整个工程
生命周期
1.局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期:整个程序的生命周期
常量
1.字面常量
eg.
#include<stdio.h>
int main()
{
int num=4;
3.14//字面常量
return 0;
}
2.const 修饰的常变量
eg.
#include<stdio.h>
int main()
{
const int num=4;//const 修饰常变量
printf("%d\n",num);
num=5;
printf("%d\n",num);
return 0;
}
输出:4,4
注意:const修饰的常变量不能用于数组内,数组内只能用常量。
3.#define定义的标识符常量
#define MAX 10
int main()
{
int arr[MAX]={0};
printf("%d\n",MAX);
return 0;
}
4.枚举常量:一一列举
枚举关键:enum
eg.
enum Sex
{
MALE,
FEMALE,
SECRET
};
//MALE ,FEMALE,SECRET----枚举常量
int main()
{
printf("%d\n",MALE);//0
printf("%d\n",FEMALE);//1
printf("%d\n",SECRET);//2
return 0;
}
5.字符串,转义字符,注释
字符串
由双引号引起来的一串字符为字符串
注意:字符串结束的标志位 \0 的转义字符,在计算字符串长度时,\0是结束标志,不算做字符串的内容。
eg.“abcdf”
int main()
{
char arr1[ ]=“abc” ; //数组
//“abc”={‘a’,‘b’,‘c’,’\0’} ------ \0为结束标志
char arr2[ ]={‘a’,‘b’,‘c’,0} ;
printf("%s\n",arr1);//%s —输出数组
printf("%s\n",arr2);
return 0;
}
输出:相同,若arr2[ ]={‘a’,‘b’,‘c’} ,则会出现乱码
#include<stdio.h>
int main()
{
char arr1[ ]=“abc” ;
char arr2[ ]={‘a’,‘b’,‘c’} ;
printf("%d\n",strlen(arr1)); //strlen----计算字符串的长度
printf("%d\n",strlen(arr2));
return 0;
}
输出:3,随机值
转义字符
即转变意思
注释
两种风格:
1.C语言风格/*xxxxxxxxx */
缺点:不能嵌套
2.C++风格 //xxxxx
可注释一行或多行
用处:代码较难懂,故注释一下
6.选择语句
(if…else…)
#include<stdio.h>
int main()
{
int input =0;
printf(“你要好好学习吗?(1/0)”);
scanf("%d\n",&input);
if(input==1)
{
printf(“走上人生巅峰”);
}
else
{
printf(“回家卖红薯”);
}
return 0;
}
7.循环语句
1.while循环
2.for循环
3.do…while
eg.
#include<stdio.h>
int main()
{
int a=200;
printf("'进入健身房\n");
while(a>90)
{
printf(“减肥体重为%d\n”,a);
a–;
}
if(a<=90)
{
printf(“减肥成功!”);
}
return 0;
}
8.函数
简化代码,代码复用
分为:自定义函数,库函数
eg.
#include<stdio.h>
int Add(int x,int y)
{
int z=x+y;
return z;
}
int main()
{
int num1=0;
int num2=0;
int sum=0;
scanf("%d%d",&num1,&num2);
sum=Add(num1,num2);
printf(“两数之和为%d\n”,sum);
return 0;
}
9.数组
一种相同元素的集合
#include<stdio.h>
int main()
{
int arr[10]={1,2,3,4,5,6,7,8,9,10};//定义一组整型数组
printf("%d\n",arr[4]);//下标的方式访问元素
return 0;
}
输出:5
arr数组
1 2 3 4 5 6 7 8 9 10
下标 0 1 2 3 4 5 6 7 8 9
默认从0开始
打印全部的数组(可以与循环相结合)
eg.
#include<stdio.h>
int main()
{
int i=0
int arr[10]={1,2,3,4,5,6,7,8,9,10};
while(i<10)
{
printf("%d",arr[i]);
i++;
}
return 0;
}
10.操作符
% ---- 取模(取余数)
#include<stdio.h>
int main()
{
int a=5%2;
printf("%d\n",a);
return 0;
}
输出:1
<<,>> -----移位操作符(左/右移)
#include<stdio.h>
int main()
{
int a=1;
//整型1占4个字节,32bit位
//0000000000000000000000000000001 (二进制)
int b =a<<2//左移两个,少的补0
printf("%d\n",b);
printf("%d\n"a);//本身不变
return 0;
}
输出:3,1
& ^ | ---- 位操作符
即 与,异或,或
异或规律:对应二进制位相同,则为0,相异,则为1.
#include<stdio.h>
int main()
{
int a=3;
int b=5;
int c=a^b;
printf(“%d\n”,c);
return 0;
}
赋值操作符
#include<stdio.h>
int main()
{
int a=3;//=赋值, ==为判断
a=a+3//等同于a+=3
a=a-3//等同于a-=3
a=a&3//等同于a&=3
//复合赋值符
//+=, -=, /= ,%= ,>>=, <<=, !=, ^=
return 0;
}
单目操作符
#include<stdio.h>
int main()
{
int a=10;
int b=a++;//后置++,先使用,再++
printf(“a=%d b=%d\n”,a,b);//11,10
return 0;
}
#include<stdio.h>
int main()
{
int a=10;
int b=++a;//前置++,先++,后使用
printf(“a=%d b=%d\n”,a,b);//11,11
return 0;
}
(–同理)
(强制转换)
#include<stdio.h>
int main()
{
int a=(int)3.14;//double强制转换int
return 0;
}
关系操作符
逻辑操作符
#include<stdio.h>
int main()
{
//真—非0
//假–0
int a=0;
int b=5;
int c=a&&b;
printf("%d",c);//0
return 0;
}
条件操作符
表达式1?表达2(真):表达3(假)
max=(a>b?a:b);