目的
c语言如何学习呢?说到c语言,它是一门最基本的高级语言,那么,到底如何快速掌握这样一门语言呢?
技能
为此,我们需要熟练掌握的技能是:
1.指针
2.数组
3.结构体
4.枚举
等的使用,还包括函数,宏定义,动态分配内存等等,其中前面所写最为重要。
主要内容
1.基本数据类型
整型 int 在64位系统里占4个字节内存空间,32位系统里占2个字节内存空间 输出格式(下同) %d,%0.2d,不足的用0补
浮点型 float 64位系统里(下同)占4个字节内存空间 %f,%lf,保留一位有效数字
双精度型 double 占8个字节内存空间 %f
长整型 long 占8个字节内存空间 %ld
字符型 char 占1个字节内存空间 %c
布尔型 bool 输出只能是true或false 表示非零即真,零即假
2.条件语句
if,else...if,switch
-1.if语句的语法:
if(条件){
条件为真/成立 需要做的事情 }
if(条件){
条件为真/成立 需要做的事情 }
else{
条件为假/不成立 需要做的事情 } 或者
if(条件){
条件为真/成立 需要做的事情 }
else if(条件){
条件为真/成立 需要做的事情 }
else if(条件){
条件为真/成立 需要做的事情 }
else{
以上条件之外 需要做的事情 }
-2.switch语句的语法(switch,case,break和default是关键字):
switch ( 变量表达式 )
{
case 常量1 :语句;break;
case 常量2 :语句;break;
case 常量3 :语句;break;
...
case 常量n:语句;break;
default :语句;break;
}
3.循环语句
while,do...while,for
-1.while的语法:
while(表达式){
语句;
}(表达式为真,执行下面的语句;为假时,直接跳出循环)
-2.do...while语句的语法:
do{
循环体;
}while(表达式);
注:do...while语句至少执行一次
-3.for语句的语法:
for(循环变量的初值;循环条件;循环变量变值){
语句;
}
4.函数
在使用函数之前首先要声明函数
通常,我们将函数的声明写在main()函数之前,方便阅读;而将函数的实现放在main()函数之后,在main()函数里使用函数这样main()函数看起来结构清晰许多。
比如,声明一个欢迎界面的函数和一个登录界面的函数
1.PNG
其分别实现
2.PNG
5.数组
数组:需要存储多个同种类型的数据
1.能够存储数据 必须得有内存
2.如何定义一个数组同时为它分配内存空间
3.数组定义是必须明确知道数组的大小
—数组初始化几个就是几个
—定义时明确指定数组的大小
—明确制定大小并且初始化部分数据
4.数组名的值就是第一个元素的首地址
QQ截图20190805212351.png
数组的优点是访问方便,而其缺点是插入和删除不大容易
5.指针
为什么要用指针呢?c中为了解决跨区域(不同作用域,不同代码块)之间的数据交互问题便产生了指针
*:
1.声明或定义变量的时候,表示一个指针变量
例: float b=20;
int c=10;
int *a定义一个指针变量 指向的内存空间里只能放整数
注:定义指针变量一定要给初值,不确定时给NULL
int *a=b;错误 指针变量只能存放地址 不能存具体值
int *a=&b;错误 整型指针只能存整型数据的地址
int *a=&c;正确
2.除了定义指针变量之外,都是访问某个地址的值
int *temp=&c;
temp=21;访问temp地址里面的数据 赋值为21
函数指针int(pFunc)(int)
函数名即为函数指针的首地址
&:取地址
64位系统,指针变量本身在内存空间占8个字节(不论什么 类型的变量)
数组名字在打印时是整个数组的字节数
数组和指针的关系
数组名并不是一个变量,没有分配内存空间
指针变量是有内存空间的
char * const p;
char const * p;
const char *p;
上述三个有什么区别?
char * const p; //常量指针,p的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可 以改
const char *p; //和char const *p
定义一个数组,系统会分配内存空间 可以存值
定一个指针变量 只为变量本身分配内存空间 无法存值,因 为没有为其分配可以存值的内存空间
注:数组一旦定义,地址不能改变,不能给数组直接赋值
如: xw.name[0]='x';
xw.name[1]='w';
系统为这个变量分配内存了
常量字符串内存是由系统分配的
字符指针赋值,必须有内存空间
6.结构体
其实结构体便是一种数据类型,集多种数据类型为一体的数据类型——复合数据类型
结构体通常定义是这样的:
struct name(结构体名){
char *age;//还需分配内存空间,可定以多个
};
然而在64位系统中,结构体所占字节数往往是根据与其所相邻的数据类型的字节数相关的,总是4或8 或16的倍数
q.png
另外遇到结构体指针时访问用->,普通指针用 * 来访问
我巩固了之前没有学习好的c语言漏洞,学会了运用条件语句和循环语句,接下来便是要通过大量的练习,使之能熟练地被运用。