C语言学不懂 进来

C语言学不懂 进来,第1张

目录
1、什么是C语言
2、第一个C语言程序
3、数据类型
4、常量与变量
常量
变量
定义变量的方法
变量的分类
变量的使用
变量的作用域和生命周期
5、字符串+转义字符+注释
字符串
转义字符
注释
前言:大家好,欢迎来到c语言世界,大家一起进步,一起成长,加油!我会先梳理出一个c语言 大概的框架,我们先一起把C语言的框架搭建起来,然后我们一起来深入的研究c语言更深层的本质。





一、什么是C语言
        理解角度一:C语言是一门交流语言          我们人与人之间交流需要语言,同样我们与计算机交流也需要语言。


美国人与美国交流用的    是英语,中国人与中国人交流用的是汉语,日本人与人本人交流用的是日语。


那么,我们与计算    机进行交流,就可以用C语言进行交流。


        理解角度二·:c语言更加擅长底层的开发。


         什么是底层的开发?其实,在厂家生产计算的时候,首先需要把外部的硬件生产出来,其实硬件就是一个铁疙瘩,然后会给这个铁疙瘩安装 *** 作系统,比如Windows Linux系统 ,在 *** 作系统的驱动之下这个铁疙瘩,才会有用。


而 *** 作系统之上是软件层次,就是我们日常中常用的QQ,微信等等,我们把 *** 做系统之下的部分称为底层。


                                                          软件层                                                         *** 作系统                                                            驱动                                                           *** 作系统                                                     理解角度三:C语言的发展史。


        我们都知道计算机的世界是二进制的世界,也就是只有0和1,在早期的时候,我们想通过计算机解决生活中问题,那编程输入的就是0和1的数字,000001111,11110000,10101010,01010101,鬼知道这啥意思?这样下去·,计算机就不能够全面普及。


后来,出现了汇编语言,就是如果 01010101这串数字代表+,那么汇编语言就是用Add来替换掉01010101这串数字,慢慢的就出现B语言,在慢慢的出现了C语言,语言的优化,其实有很多前辈都在研究,那么导致的结果就是会出现各种各样的C语言,那么所出现的结果,就是我们公司的c语言所研发的产品,不能在别家的公司跑不过去,我家的在你家的跑不过去,你家的在我家的跑不过去,所以,面临的问题就是:c语言必须要有一套标准,慢慢的就出现了,我们今天的所学C语言。


2、第一个C语言程序
 

#include
int main()
{
    printf("hello world\n");
    return 0;

}
理解:你肯定会问,为什么代码要这样写?        1.计算机在执行程序的时候,是一行一行往下运行的,所以我们得有一个程序得入口,而这个入口就是主函数。


所以,逻辑上先要写:主函数的框架。


        2.其次我们要明确我们这个程序的是要实现“Hello  world”的打印,所以我们要用printf这个函数,因为这个函数的功能就是实现打印,又因为printf这个函数是库函数,我们在使用它是,需要先得向库函数声明一下,就向我们借别人的东西之前,我们先得向别人说一下嘛,所以要先写 #include         3.其次就是再写printf("Hello   world"); 这个解析并不重要,我想分享的是:写程序是有逻辑的,代码是写出来的,不是背出来的。


        
3、数据类型      计算机要解决生活中的问题,需要对数据进行存储,处理,那也就意味,必须要有存放这些数       据的空间,而这写空间就是,各种数据类型分类如下:
              char //字符数据类型
              short //短整型
              int //整形
              long //长整型
              long long //更长的整形
              float //单精度浮点数
              double //双精度浮点数
              注:C语言当中没有字符串类型   理解                    1. 数据类型所占内存空间的大小

#include 
int main()
{
    printf("%d\n", sizeof(char));      //1字节
    printf("%d\n", sizeof(short));     //2字节
    printf("%d\n", sizeof(int));       //4字节
    printf("%d\n", sizeof(long));      //4字节
    printf("%d\n", sizeof(long long)); //8字节
    printf("%d\n", sizeof(float));     //4字节
    printf("%d\n", sizeof(double));    //8字节
    printf("%d\n", sizeof(long double)); //8字节
    return 0;

为什么要有这么多的数据类型:为了更加丰富的表达生活中的各种值,比如字符 ,体重,薪水,等等
数据类型的使用
int main()
{
  char ch='w";
  int weight 130;
  int salary=15000;
  double x=3,141592;
}
4、常量          1.变量的本质到底是什么?
int main()
{
   int a=0;


  return 0; 
}
当我们定义出:int a=0;那一刻的时候    *** 作系统就会在内存条中就会分配出一块4个字节大小的空间,对数据进行数据的存储。


要注意的是,在定义变量的时,要养成初始化的习惯,为什么这样说?举个例子就明白了:假设我们要进一个新的房子中去,我们总的先把里面的垃圾数据清理干净          2.变量的分类?             变量分为局部变量和全局变量            局部变量

int main()
{
   int a=0;

}
在主函数内部的变量           全局变量
int b=0;
int main()
{

 return 0;
}
在主函数的外部所定义的变量 3.作用域与生命周期      局部变量的作用域与生命周期            作用域?生命周期?作用域可以理解为这个变量只在这个范围才有使用的权限。


而生命周期是,在程序执行的时候,这个变量使用权限所占运行时间的长短

#include
int  mian()
{

 {
    int  a=10;
    printf("%d",a);
 }

    printf("a=%d",a);
  return 0;
}
也就是说:第一个能够打印出来                     第二个是打印不出来的     全局变量的作用域是整个工程,全局变量的生命周期是整个程序运行完的时间。


         

#include
int  a=10;
int  mian()
{

 {
   
    printf("%d",a);
 }

    printf("a=%d",a);
  return 0;
}
也就是说:两个地方都可以打印出来
生活中的有些值是不变的(比如:圆周率,性别,身份z号码,血型等等)。



有些值是可变的(比如:年龄,体重,薪资)。



不变的值,C语言中用常量的概念来表示,变的值C语言中用变量来表示。


 常量
 C语言中的常量分为以下以下几种:    1.字面常量       1000  3.14     6.60  
   2.const 修饰的常变量


int main()
{
  const int Money=5;

  return 0;
}

 3.#define  定义的标识符常量
int main()
{
 #define N 100;
 return 0;
}

  5、字符串+转义字符+注释
字符串
"hello world"      

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。


字符串必须要注意的点: 1..字符串的结束标志是一个 \0 的转义字符
    如何理证明\0是字符串的结束标志:
证明1:下面代码,打印结果是什么? 你可以自己去验证

#include 
int main()
{
    char arr1[] = "hello";
    char arr2[] = { 'h','e','l','l','o' };
    char arr3[] = { 'h','e','l','l','o', '\0' };
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n”,arr3);
    return 0;
}

分析:
arr1 是一个字符串,它在内存中存储的是:‘h’ ‘e’ ‘l’ ‘l’ ‘0’ ‘\0’六个字符,和 arr3 一样,而’\0’是字符串结束的标志,所以以 %s 打印arr1 和arr3 的时候是hello,而arr2 的末尾没有’\0’,所以当它以 %s 去打印的时候编译器不会在字符’o’的位置停下,而是会继续往后打印,直到遇到’\0’才停止,但是我们并不知道arr2后面的内存空间存放的是什么数据,所以arr2打印出来的字符个数以及是何种字符我们是无法确定的。


证明2:下面代码,打印结果是什么?

#include 
#include
//strlen:求字符串长度的库函数,返回'\0'以前的字符的个数,其头文件是 string.h
int main()
{
    char arr1[] = "hello";
    char arr2[] = { 'h','e','l','l','o' };
    char arr3[] = { 'h','e','l','l','o', '\0' };
    printf("%d\n", strlen(arr1));
    printf("%d\n", strlen(arr2));
    printf("%d\n", strlen(arr3));
    return 0;
}

补充:strlen:求字符串长度的库函数,返回’\0’以前的字符的个数,其头文件是 string.h
这里和上面一样,strlen 求字符串长度,遇到’\0’停止,所以arr1 和 arr3都是5,而arr2 末尾没有’\o’,而我们又不知道 arr2 后面的数据是什么,所以 arr2 打印出来的是随机值。


转义字符 理解:就是把原来的意思转变了
C语言转义字符表 需要掌握的常见住转义字符 \n  换行 \t    水平至表符 \r   回车 \xddd    把十六进制ddd这个数字转化为十进制那个数字所对应的ASCII的符号 \ddd      把八进制ddd这个数字转化为十进制那个数字所对应的ASCII的符号 \b          退格符 对字符串和转义字符的理解:
笔试真题:下面代码的输出结果是什么

#include 
int main()
{
    printf("%d\n", strlen("abcdef"));
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0;
}
答案      6     14
分析:
第一个我们不说,直接看第二个:c:\test\628\test.c,其中 \t \62 \t 被 \ 修饰转义,看作一个字符,所以一共是14个字符,可能有很多同学会把 \628 看作一个字符,从而得出答案13,但是请注意,八进制数的最大数是7,8不属于八进制的范畴,所以 \62 是一个字符,8 是另外一个字符 注释 注释的用法:可以对所写的程序进行解释说明,增强可读性。


也可以对想删除或者没用、错误的代码直接注释。



注释有两种风格:
C语言风格的注释 : /xxxxxx/ ,注释方便,但不能嵌套注释。



C++风格的注释 : //xxxxxxxx ,可以注释一行也可以注释多行,也可以用 ctrl+k+c 与 ctrl+k+u 快速注释与取消注释,目前比较受欢迎。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/577658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存