C语言第八课:指针(二)

发布时间:2026/10/22 3:31:04
C语言第八课:指针(二) 1.const 修饰指针1.1const修饰变量tip:在C语言中这里的a是常变量但是如果在C中这里的a就是常量在变量前加上const 本意是a的值不能被修改但是仍然可以通过指针去修改a的值如下图1.2 const 修饰指针变量const 可以放在*左边也可以放在*右边俩边的作用是不一样的。左边限制的是指针变量指向的内容不能通过指针变量p来改变*p的内容但是p的内容是能改变的p可以指向其他变量。右边限制的是指针变量p*p可以改变但是p的内容不能改变不能指向其他变量如果在*的两边都放上const那么p和p指向的内容就都不能修改了2.野指针概念野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的2.1野指针的成因2.1.1 指针未初始化2.1.2 指针越界访问2.1.3 指针指向的空间释放p一旦拿到这个地址的时候就是野指针了因为p中存放的这个地址指向的内存空间已经返还给操作系统了2.2 如何去规避野指针2.2.1 指针初始化如果知道指针应该指向哪里就直接给指针一个值如果还不知道指针变量应该指向哪里的时候那么初始化为NULLtipNULL是C语言中定义的一个标识符常量值是00也是地址读写该地址时会报错。2.2.2 小心指针越界2.2.3 指针变量不再使用时及时置NULL指针使用之前检查有效性2.2.4 避免返回局部变量的地址3. assert 断言assert.h 头文件定义了宏 assert(),用于在运行时确保程序符合指定条件如果不符合就报错终止运行。这个宏常常被称为“断言”exassert(p!NULL);上行代码用于验证变量p是否等于NULL ,如果确实不等于NULL 程序继续运行否则终止运行并且给出报错信息提示。assert() 宏接受⼀个表达式作为参数。如果该表达式为真返回值非零assert() 不会产生任何作用程序继续运行。如果该表达式为假返回值为零assert() 就会报错在标准错误流 stderr 中写入⼀条错误信息显示没有通过的表达式以及包含这个表达式的文件名和行号。assert() 的使用对程序员是非常友好的使用 assert() 有几个好处它不仅能自动标识文件和出问题的行号还有⼀种无需更改代码就能开启或关闭 assert() 的机制。如果已经确认程序没有问题不需要再做断言就在 #include assert.h 语句的前面定义⼀个宏 NDEBUG 。定义宏NDEBUG所有 assert 全部失效变成空语句不会做任何判断。4.指针的使用和传址调用4.1库函数strlen的功能是求字符串长度统计的是字符串中 \0 之前的字符的个数。4.2传值调用和传址调用4.2.1传值调用实参传递给形参的时候形参是实参的一份临时拷贝形参有自己独立的空间对形参的修改不会影响到实参。4.2.2 传址调用传递的是地址传址调用可以让函数和主调函数之间建立真正的联系

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询