对c语言中基本数据类型及表达式的理解
-
主函数
int main(){
//此处省略一系列代码
return 0;
}
- main()函数即主函数
【小括号括起来的是参数】【大括号括起来的是代码块→去完成特定功能】
- 所有的程序的入口点都是main函数
- int main(int argc,char * argv[]) 此为标准模板,即规定参数,main是系统给的
ps int argc:参数个数 (全称 argument count)
char * argv[]:每个参数组成的字符串组成的数轴(其中无 * 放的是字符如j,有 * 放的是字符串如jeck)
- 主函数结束一般都有写return 0,
此即int返回值 记录当前程序的运行状态——
0:正常结束→资源自有分配 非零:1 异常结束→没收
-
printf与scanf以及系列变量
int main(int argc,char*argv[])
{
printf ("%d\n",argc);
printf ("%s\n",argv[0]);
printf("hello\nworld\n");
return 0;
}
以上输出结果为 1
此项目存储所在位置
(argc,argv[0]代表意义见上)printf 输出语句:输出字符串-特征符号为"" |相连于终端口 console
scanf 输入:终端输入-即用户用设备点按键 |相连于终端口 console
变量用来记录数据( 以下基本数据类型→只能存一个值 )
注意:\n 表示换行
\t 表示一个缩进
- scanf格式化输入
若缓冲区:123 456
int a;拿走123
char b=' ';拿走空格
int c=;拿走456
则终端:123 456
int main(){
int pwd=0;
scanf("jack%d",&pwd);
printf("pwd=%d\n",pwd);
int num1,num2;
scanf("%d %d",&num1,&num2);
printf("%d %d\n",num1,num2);
return 0;
}
scanf引号内即"用户输入的格式",所以输入jack123,才能输出显示123,因此最好不要在scanf里面随便写内容
若不按格式来则输出为0
下面的方式scanf("%d%d",&num1,&num2); 这样用户要一个一个敲,比较麻烦
且当两个放一起而上方不按格式输入时,输入的数字会被沿用到下方的输入格式
int 整型数据 用于整数如1 2 3 4 5 6 2342 格式符%d
long 长整型 用于数值大的整数 格式符%ld
floot 单精度浮点数 用于小数如1.5 94.3 82.6 格式符%f
double 双精度浮点数 用于小数如1.4 格式符%f
char 字符 用于单个字符如'd' 'a' 格式符%c
string 字符串 用于多个字符如"jack" "rose" 格式符%s
short 短整型 用于整数 格式符%d
bool 布尔型 用于判断如是,成立true;不是,不成立 false 格式符%d
pps//二级缓存可了解一下不同变量占据的内容空间不一样
[sizeof() 是一种内存容量度量函数,则可以此验证]
int main(){
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(double));
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(bool));
printf("%d\n",sizeof(float));
return 0;
}
以上可得出各变量的内存度量值
-
(格式符为真实值预留位置,并控制显示的格式)实用及延展见下
int main(){
int count =0;
count = 3;
printf("%02d\n",count);
printf("%d\n",count);
long size=230;
printf("%ld\n",size);
system ("pause");
return 0;
}
%d 为整数型预留位置 %ld为大数值整数型预留位置
衍生%02d 及整数列数不足两位时自动用0补齐
int main(){
float score = 3.141592;
printf("%f\n",score);
printf("%.2f\n",score);
return 0;
}
衍生%.2f表示保留小数点后两位;可类推%.3f表示保留小数点后三位等等
int main(){
char choose='y';
printf("%c\n",choose);
printf("%d\n",choose);
bool status=false;
printf("%d\n",status);
return 0;
}
当%d保留位置后输入的为字符时,其输出为字符对应ASCII码值
当将代码中的y换为一个中文字时,执行出错,因为一个中文占两个字符
%d也为布尔型预留位置,非零即真(true)1,换成3时显示1,零即假(false)0,
-
运算符
符号 | 代表意义 | 符号 | 代表意义 |
---|---|---|---|
+ | 加或正号 | - | 减或负号 |
* | 乘法 | != | 不等于 |
/ | 除法取整数部分 | % | 除法取余数部分 |
ps:x=x%5 可表示0-4这一范围,因为% 是整除取余数,x%5得 0-4
符号 | 代表意义 | 符号 | 代表意义 |
---|---|---|---|
&& | 且(两个同时成立) | 双竖线 | 或(只要一个成立即可) |
++ | 自增 | -- | 自减 |
== | 等于(用于判断) | = | 赋值 |
ps:+=即a=a+一个数的简写 ;-=同理; !=不等于
对c语言中的全局与局部变量的理解
根据变量作用域的不同可分为局部变量和全局变量
- 局部变量
(在函数内部定义的变量,作用域为函数内部,该函数外无法使用) - 全局变量
(在所有函数外定义的变量,一般与头文件在一块儿,作用域从声明开始直到程序结束)
PS:
- 同一源文件中可以有同名的局部变量与全局变量,但在局部变量的作用域里,同名的全局变量无效
- 可以在不同的函数里使用同样的变量名代表不同变量
- 局部变量不能赋值为同名全局变量的值
排序
PS可以在优酷搜索舞动的排序来方便理解
- 冒泡排序
实现方式:每次都遍历一个数组比较大小,找到最大的一个数沉底,如果数组有N个元素。
第一次需要 - 选择排序
实现方式:外层循环控制需要遍历多少次(n-1) 再内层循环遍历出当前最小的数 - 等等
对于#define的理解
- define用于定义常量时即为数值定义别名 ,也可以为类型定义别名
- define的好处:1 加强了代码的可读性,2 增强可操作性便于代码修改。(当多处使用#define定义的别名时,别名对应的值需要修改时,可以直接在#define处快速修改)
- 下面是使用 #define 预处理器定义常量的形式:
#define example -1
扩展了解可看const
函数的使用
-
函数由一个函数头和一个函数主体组成,俗语说就是代码块 { } == 的独立空间
[每个 C 程序都至少有一个函数,即主函数 main() ]
函数可以用来区分代码块,即封装代码块,好处是运用灵活
-
使用函数需要了解的几个组成部分:
1.返回类型:一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
2.函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
3.参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
4.函数主体:函数主体包含一组定义函数执行任务的语句。
-
一个功能对应一个函数(如下命名)
1.init
2.isExists;
3.bubleSort;
4.play
5.userInput
6.返回 ↓
函数名(type param1,type param2){
代码块
return ;
}
-
函数使用需要知道的几个过程
- 函数声明(函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。)
△针对定义的函数 max(),作函数声明为:
int max(int num1, int num2);
△在函数声明中,参数的名称并不重要,只有参数的类型是必需的,因此下面也是有效的声明:
int max(int, int);
ps:参数类型诸如 void int float char
pps:有驼峰命名法 add download parse
scaleImageToSize
int add(int a, int b){
}
ppps:形式参数:这个代码块的局部变量
- 调用函数(创建 C 函数时,会定义函数做什么,然后通过调用函数来完成已定义的任务。)
-
定义函数执行的两种方式
- 声明和实现一起(操作如下)
int add(int a, int b){
int sum = a + b;
return sum;
}
int minus(int a, int b){
return a - b;
}
- 先声明 后实现(操作如下)
int minus(int a, int b);
int add(int a, int b);
void test(void);
int main(int argc, const char * argv[]) {
//函数的使用
//通过调用函数的函数名();
add(1, 2);
int result = add(3, 3);
return 0;
}
详情可点击段首链接