C语言第一课

文章介绍了学习C语言的经典起点,包括如何使用VS编写C语言程序,主函数的规范,以及数据类型的复习,如int、short、char、float和double等。还提到了利用sizeof计算数据类型所占空间,变量的局部与全局作用域,生命周期,以及常量的使用,包括枚举常量和字符串的处理。
摘要由CSDN通过智能技术生成

前言:学了一年的java,突然想去做游戏所以重新开始学习C语言(大哭)

经典第一课:

1.学会使用VS以及C语言main函数规范

#define_CRT_SECURE_NO_WARNINGS 1
//写代码
//1.写出主函数(main函数)
//100-500行代码
//如何执行呢?-c语言是从主函数的第一行开始执行的
//所以C语言代码中有main函数入口
#include<stdio.h>//printf需要引用头文件stdio.h
int main()
{

printf("holle world");
//在中间狂输入代码
return 0;
}

2.再次复习经典的数据类型:

     int:整型   举例子:int   a=24;

    short:短整型   举例子:short  dong=30;

    char:字符数据类型   举例:char  yang=‘a’;

   long long :加长版本

   float:单精度浮点数  举例子:float  c=0.2;

double:  双精度浮点数  举例子:double d=1.2;(相较于单精度,双精度更准确一点)

2.1 如何查看计算类型或者变量所占空间的大小

在c语言中sizeof方法可以用来计算类型和变量所占空间的大小

int main(){
printf("%d\n",sizeof(char));
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(short));
printf("%d\n",sizeof(long));
printf("%d\n",sizeof(long long));
printf("%d\n",sizeof(float));
printf("%d\n",sizeof(double));

return 0;

}

输出结果:char(1)、short(2)、int(4)、long(4)、long long(8)、float(4)

double(8),运算单位为字节(byte)。{红色为常用类型}

浮点数据是指带有小数的数字。

因为精度不同分为三种:float(32bit )、double(64bit)、long double(64bit)。

一个细节:在c语言标准中sizeof(long)>=sizeof(int),int,short int ,long int是根据编译环境的不同,所取的范围不同。另外c语言int的取值范围在于它占用的字节数,不同的编译器,规定的不一样。1.ANSI标准定义int是占2个字节 2.TC是按照ANSI标准的,它的int是占2个字节的 3.在VS里面,一个int是占4个字节的

C语言是不存在字符串变量,字符串只能存在字符数组中。

计算机的单位(加强复习一下):bit-比特位-一个比特就是存放一个0或者1;

                                                      byte-字节-一个字节等于8bit

                                                      kb-1024个byte下面是就是熟悉的内存单位了

变量:

变量分为全局变量与局部变量,分辨起来也很简单:{  }在大括号里面定义的变量就是局部变量只能在大括号内使用,而在{ }外面的就是全局变量可以在全局使用。当局部变量与全局变量名字冲突的时候就会采用局部优先的原则。

练习题1

写一段代码求两个数之和(该题目只是为了了解变量以及引出scanf函数,而不是对局部变量和全局变量加以区分的)

int main(){
int a=0;int b=0;
scanf("%d %d",&a,&b);
sum=a+b;
printf("sum=%d\n",sum);
return 0;
}

小细节:在用scanf_s函数只能在VS编译器上使用,而为了在跨平台的时候不会报错最好选择

scanf函数作为输入指令,但是使用的时候需要在代码页第一行加一行代码:

#define_CRT_SECURE_NO_WARNINGS 1

变量的作用域和生命周期:

作用域 :一段代码程序不可能总是有效的/可用的,而限制这个限定这个名字的可用范围就是这个名字的作用域。

全局变量的作用域是整个工程

在跨文件使用变量的时候需要先声明一下:extern 后面加要声明的变量。

比如在一个工程中a源文件定义了一个变量:int  a=0(a为全局变量,而且a定义在main函数外面);而在另一个源文件中要去使用这个a变量,但是它识别不到,这时候你就要告诉这个源文件工程中是有这个变量a的:extern int  a;

生命周期:

局部变量的生命周期随着作用范围的加载结束而死亡,如下函数

int main(){
{                   
//{}可以限制函数的作用范围
int a=10;
printf("%d\n",a);
}
printf("%d\n",a);
return 0;
}

在上述代码中后面的printf语句是不能输出a变量的值,因为a随着上面的}的结束而“死亡”了

全局变量的生命周期:就是程序的生命周期。

常量:字符串常量:3.2   4  a   abd  

常变量:如果不想让变量被后续操作改变,只需要加一个const把它变成常变量就行。

              长变量本质还是一个变量但是增加了不可变属性。

             另外还有#define 定义的标识符常量

   

#difine MAX 10000;
int main(){
int a=MAX;
printf("a=%d\n",a);

return 0;
}

//输出结果是a=10000

   此时MAX就是标识符常量,而且MAX不能修改

枚举常量:用性别举例子  

关键字enum Sex{ MALE,FEMALE,SECRET }//括号里面的就是Sex对应的变量的未来可能取值
 

enum Sex{
MALE,//0
FEMALE,//1
SECRET  //2
};

int main(){
enmu Sex s =MALE;//在对s赋值的时候只能选择enum里面的值进行赋值。
//如果我们对常量里的值进行输出
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
}

此刻输出的值依次为:0,1,2;

如果这样定义

enum Sex{
MALE=3,//0
FEMALE,//1
SECRET  //2
};

int main(){
enmu Sex s =MALE;//在对s赋值的时候只能选择enum里面的值进行赋值。
//如果我们对常量里的值进行输出
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
}

则此时输出的值依次为:3,4,5;        

字符串、转义字符、注释

字符串:就是一串字符,用双引号括起来的东西(重:字符串的结束标志是\0的转义字符

证明代码:

int main(){
//字符数组-数组是一数组:一组相同类型的元素
char arr[]="hello wrold"
return 0;
}

在监视页面中,会看到总共的数组理应是有4位,然而实际上是有5位,因为c语言会自动补上一个\0 (\0是字符串的结束标志)在下面的例子中可以理解"\0"这个结束标识。

我们定义两个字符串:char  arr1[]="abc";     char arr2[]={"a","b","c"};我们再用VS的监听器去看看char1和char2有多少元素时候会发现,arr1中有四个包括a,b,c以及结束符\0,而arr2中有6个,包括a,b,c,以及三个\0结束符。

补充:在c语言中求字符串的长度是可以用strlen来尝试,但是在使用的时候需要引用头文件

#include<string.h>

#include<string.h>
#include<stdu.h>
int main(){
char arr1[]="abc";
char arr2[]={'a','b','c'};
printf("%d\n",strlen(arr1));
printf("%d\n",strlen(arr2));
}
//输出结果为:3,15(15为随机值)

strlen函数在工作的时候就是在寻找\0然后结束+1的操作得到最后的结果,而在对arr2进行寻找\0的时候strlen不确定\0在哪所以就会打印出一个随机数出来。

重点:\0只作为字符串的结束标志并不会影像字符串长度,不作为字符串内容。        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值