C语言精髓知识点总结

1、野指针:就是指针指向的位置是不可知的,指向的位置可能不能访问,触发段错误

2、怎么避免野指针:在指针解引用之前,要确保指针指向一个绝对可用的空间

常规做法:第一点:在定义指针时同时初始化为NULL; 

第二点:在解引用之前先判断这个指针是不是NULL;      

第三点:使用完后再将其赋值为NULL;      

第四点:在使用指针前,先将其赋值绑定一个可用的地址空间。      

3、NULL到底是什么

在C/C++中定义为:

#ifdef _cplusplus

#define  NULL  0

#else  

#define  NULL  (void *)0

#endif

为什么将指针指向0地址处?第一:0地址作为一个特殊地址(我们认为指针指向这个地址就表示指针没有被初始化,就表示野指针);第二:0地址在一般的操作系统中都是不可被访问的,如果不按规矩直接去解引用就会触发段错误,这已是最好的结果了。

4、const关键字,用来修饰变量,并表示这个变量是常量

     第一种:const int *p;

     第二种:int const *p;

     第三种:int * const p;

     第四种:const int * const p;

关于const修饰的变量的理解,主要涉及两个变量:第一个是指针变量p本身;第二个是p指向的那个变量的值(*p)

5、数组中a和&a不能做左值,因为a代表整体的数组空间,对数组操作要单独操作,不能整体操作;&a是一个编译器自动分配的好的内存地址,所以是个常量,不能做左值。

6、&a、a、&a[0]从数值上是相同的,但从意义上看,a和&a[0]是数组首元素的首地址,而&a是整个数组的首地址;从类型来看,a和&a[0]是元素指针,也就是int*类型的;而&a是数组指针,是int (*)[]类型的。这个区别对指针运算会产生影响。

7、指针变量+1时实际吧不是+1而是加1*sizeof(指针类型),主要原因是希望指针+1后刚好指向下一个元素。

(一个字节占8个bit(0x00),所以一个int类型的就占32个字节(0x0000))

8、函数形参是数组时,实际传的不是整个数组,而是数组的首元素首地址,实际上相当于传递的是指针,也就是占4个字节。所以传递数组大小时要另外将sizeof(a)传进函数中,表示数组大小。

9、在子函数内传参得到的数组首元素首地址和外面直接得到的数组首元素的首地址是相同的,这就叫做“传址调用”,此时可以通过穿进去的地址来访问实参。,数组作为函数形参时,[ ]里的数字可有可无,这是因为数组名做形参传递的只是个指针,根本就没有数组长度这个信息。

10、结构体变量作为函数形参的时候,实际和普通变量时表现一样。由于结构体一般比较大,所以也用指针来传参。

11、传值调用

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机二级C语言知识点主要包括语法基础、数据类型、运算符、控制语句、函数、数组、字符串、结构体、指针等内容。 首先是语法基础,包括标识符的命名规则、注释的使用方法、变量的定义和声明等。掌握这些基础知识是理解后续知识的基础。 其次是数据类型,C语言中主要包括基本数据类型(如int、float、char等)和派生数据类型(如数组、结构体等)。对各种数据类型的特点、表示范围以及存储方式的了解,是编写程序的基础。 运算符包括算术运算符、关系运算符、逻辑运算符、位运算符等。掌握运算符的优先级和结合性,能够正确理解和使用运算符,编写出更加高效、准确的程序。 控制语句主要包括条件语句和循环语句。条件语句使用if-else语句和switch语句进行条件判断和多分支选择。循环语句包括for循环、while循环和do-while循环,用于重复执行一段代码。了解这些控制语句的用法和特点,能够正确地控制程序的执行流程。 函数是C语言的重要组成部分,能够提高代码的可重用性和可读性。学习函数的定义、调用和参数传递方式,能够编写出结构清晰、模块化的程序。 数组是一种能够存储多个相同类型数据的容器,了解数组的定义、使用和特点,能够处理大量数据,并进行各种操作。 字符串是一组字符的集合,掌握字符串的定义、初始化和操作函数的使用,能够处理字符串相关的操作,如拼接、比较等。 结构体是一种自定义的数据类型,可以包含多个不同类型的数据成员,了解结构体的定义和使用方式,能够处理更加复杂的数据结构。 指针是C语言的重要概念,通过指针可以直接访问内存地址,了解指针的定义、初始化和使用方式,能够灵活地处理内存中的数据。 综上所述,掌握二级C语言知识点,对于理解计算机程序的执行原理、提高编程能力具有重要意义。通过实践和不断的积累,能够有效地应用这些知识点编写出高质量的C语言程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值