C语言常见概念(1)

1.C语言的发展史,学习C语言的重要性?

ab5e8b09e8224c639274ef91d7c0ef2b.png

 

2.编译和链接是什么?过程是什么?

C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器翻译和链接器的链接,生成二进制的可执行文件,可执行文件才能执行。

C语言代码是放在.c为后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译和链接2个过程。

代码—编译 —链接 —二进制信息

76b6efdc8bd147028ff4d322b205cbbe.png

 

3.各个编译器我该使用什么?VS的优势?

dd52e24e174d4bd78e5af1e6baf9b8a5.png

 Vscode-编辑器—装插件—C/C++

VS优点:

主流的集成开发环境,企业中较为普遍

包含编辑器—编译器—调试器,功能强大

直接安装即可使用,上手容易

默认界面是中文,初学者友好

4.main函数究竟是啥?

程序的执行是从main函数的第一行开始执行的,main函数是程序的入口,main有且只有一个,即使一个项目中有多个.c文件,但只能有一个main函数。

5.关键字有哪些?要背诵吗?

常用32个关键字

d0fb6cbfd6354a8bb9a50a4f05cc06f4.png

 不需要背诵,慢慢一个一个学。

6.字符?asc码?字符计算?

键盘上可以敲出各种字符,如:q,a,@,#等

给这些字符中的每个字符编一个二进制序列,叫做编码,美国国家标准学会出台了一个标准ASCII编码

8d5a4bfcc77c4f7dbb287a10013f6e4d.png

 465376afb73148fa99fcfb847bcfda8c.png

 

7.C语言的字符串?字符和字符串有何区别?

 

8.sizeof和strlen?竟然有坑?

 

sizeof 一般形式为:sizeof(object),也可以sizeof var_char,不过大部分programer习惯用sizeof()。 对象可以是表达式或者数据类型名,当对象是表达式时,括号可省略。sizeof是单目运算符,其运算符的含义是:求出对象在计算机内存中所占用的字节数。

strlen

头文件:#include <string.h>

strlen()函数用来计算字符串的长度,其原型为:unsigned int strlen (char *s); s为指定的字符串

区别:

 
 
  • Strlen是函数
  • 字符串用 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(**不包含 ‘\0’ **)。
  • 参数指向的字符串必须要以 ‘\0’ 结束,负责会一直往后寻找,直到碰见’\0’才会停下,此种后果会返回一个随机值。
  • 注意函数的返回值为size_t,是无符号的( 易错 )。
  • strlen只能用char*做参数,且必须是以’’\0’'结尾的。
  • 数组传递给strlen就退化为指针了。

因为strlen返回值为无符号类型,优先级高于有符号类型,和有符号类型进行运算时会进行类型转换,所以strlen只能比较,不能参与运算,否则会造成不可预知的后果。

错误示例一:
   if (strlen(x) - strlen(y) >= 0)  //最终结果会转换为无符号类型,条件永为真。
   {

   }
   
错误示例二: 
   if (strlen(x) - 7) >= 0)  //最终结果会转换为无符号类型,条件永为真。
   {

   }
   
正确示例一:
  if(strlen(x)>= strlen(y))
  {
  
  }


sizeof (类型明符)   类型必须加括号,如果是变量名可以不加括号
sizeof 表达式

  • sizeof 是关键字/单目运算符,是计算变量或者类型所占内存大小的关键字(返回以字节为单位的大小),而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等。
  • 返回字符数组大小的时候,包括’\0’
  • 编译时有效,由于sizeof是在编译时计算,因此 sizeof 不能用来返回动态分配的内存空间的大小。
  • 数组做sizeof的参数不退化。

多说无益,做几道小题练练手,加深理解:

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));

char arr[] = "abcdef";
printf("%d\n", sizeof(arr));
printf("%d\n", sizeof(arr+0));
printf("%d\n", sizeof(*arr));
printf("%d\n", sizeof(arr[1]));
printf("%d\n", sizeof(&arr));
printf("%d\n", sizeof(&arr+1));
printf("%d\n", sizeof(&arr[0]+1));
printf("%d\n", strlen(arr));
printf("%d\n", strlen(arr+0));
printf("%d\n", strlen(*arr));
printf("%d\n", strlen(arr[1]));
printf("%d\n", strlen(&arr));
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));

char *p = "abcdef";
printf("%d\n", sizeof(p));
printf("%d\n", sizeof(p+1));
printf("%d\n", sizeof(*p));
printf("%d\n", sizeof(p[0]));
printf("%d\n", sizeof(&p));
printf("%d\n", sizeof(&p+1));
printf("%d\n", sizeof(&p[0]+1));
printf("%d\n", strlen(p));
printf("%d\n", strlen(p+1));
printf("%d\n", strlen(*p));
printf("%d\n", strlen(p[0]));
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));

strlen的作用是计算一个字符串的长度\也就是多少个字节

9.转义字符是什么?平时怎么用?

22fd11551a6c4f529341c46c30e47537.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值