1、指针和数组变量的区别

#include 

输出:

output:1580x7fff5ab94af50x7fff5ab94af50x7fff5ab94af50x7fff5ab94ae8

  • printf("%pn", s);printf("%pn", t); 相同可以看出数组变量可以被当做指针使用,并指向数组在存储器中的起始地址
  • 对于sizeof运算,当参数为数组变量时,会自动计算对应的数组长度而非指针长度(其实就是这个数据类型所占的字节大小)。
  • 对于数组变量取地址仍然为数组的起始地址:&s == s ==&s[0] 值相同但含义不同
  • 数组变量不能指向其他地方(数组名是个常量),但创建指针变量的时候计算机会为它分配存储空间。实际上计算机只会为数组分配存储空间,但不会为数组变量分配任何存储空间,编译器会在数组变量出现的地方将它替换成数组的起始地址。

2、C语言中指针+1运算

好文:详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 的含义

注意:*p++ //先解引用,然后p的地址自增(与P指向的对象无关)

注意:p=NULL 和p=0 或 p='0' 等价

3、二维数组

二维数组可以形象的看作为用行指针、列指针来操作

行指针前+* = 列指针

列指针前+& = 行指针

p[n] == *(p+n)

p[n][m] == *( *(p+n)+ m )

4、C语言函数不定参数实现方式

好文:C语言函数不定参数实现方式

5、const关键字

#include

6、字节对齐

//字节对齐 原则;

好文:#pragma pack()用法详解

7、大小端问题 Little-Endian Big-Endian

//大小端 + 联合体

好文:C语言之大小端详解_C/C++_qq_39412582的博客-CSDN博客

8、文件操作

文件操作
r 可读权限 文件必须存在 若不存在打开失败报错
r+ 可读可写权限 文件必须存在 若文件不存在打开失败报错
w 可写权限 不允许文件读出 若文件不存在 创建文件
w+ 可读可写文件 若文件不存在 创建文件
a 以附加方式打开可写的文件 若文件存在 则会在文件末尾进行数据写入 若文件不存在 创建文件
a+ 以附加方式打开可读可写的文件 若文件存在 则会在文件末尾进行数据写入 若文件不存在 创建文件

//文件操作 注意在同一个文件中不要同时进行读写操作(文件在读写时候文件流会移动)

好文:C语言文件读写操作总结 - home普通的人 - 博客园

9、段错误快速定位

1、 编译时gcc 1.c -g ,后边加上-g
2、 运行时./a.out,产生段错误时会自动生成core.xxxx的文件
(若没有产生这个文件,则在命令行输入ulimit -c umlimited,重新编译运行)
3、 用gdb调试 gdb a.out core.xxxx
4、 输入where查看详细信息,既可以定位段错误的位置

10、++i、i++

++i 先运算,再显示值
i++ 先显示,再运算

11、程序的终止及atexit函数详解

好文:程序的终止及atexit函数详解_C/C++_honeyJ-CSDN博客

12、三目运算

好文:三目运算符详解 - 鸿燕藏锋 - 博客园

对上文中第7点不甚了解,看不出来区别

13、指针

好文:C语言指针详解 - lulipro - 博客园

指针是程序数据在内存中的地址,而指针变量是用来保存这些地址的变量。

为什么需要指针?
第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。
第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。
第三,有些操作必须使用指针。如操作申请的堆内存。
第四,C语言中的一切函数调用中,实参传递给形参的机理都是“按值传递(pass by value)”的,如果我们要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。

//1) 一个有10个指针的数组,该指针是指向一个整型数的;

14、类型限定符

好文:C语言类型限定符

15、函数指针

#include 

16、数组指针array pointer 指针数组 pointer array

int 

指针数组(也就是元素为指针类型的数组)常常作为二维数组的一种便捷替代方式。一般情况下,这种数组中的指针会指向动态分配的内存区域。

//例如,如果需要处理字符串,可以将它们存储在一个二维数组中,

17、 动态内存分配

两个内存分配函数 malloc()和 calloc()的参数不一样:

void*malloc(size_t size);

函数 malloc()分配连续的内存区域,其大小不小于 size。当程序通过 malloc()获得内存区域时,内存中的内容尚未决定。

void*calloc(size_t count,size_t size);

函数 calloc()分配一块内存区域,其大小至少是 count_size。换句话说,上述语句分配的空间应足够容纳一个具有 count 个元素的数组,每个元素占用 size 个字节。而且,calloc()会把内存中每个字节都初始化为 0。

18、应用

好文:C语言中引用的用法_C/C++_小米mm修仙路-CSDN博客

指针和引用的区别
相同点:
1)都是地址的概念,指针指向一块内存,它的内容是所指内存的地址;引用是某块内存的别名。
区别:
1)指针是一个实体,而引用仅是个别名;
2)引用使用时无需解引用(*),指针需要解引用;
3)引用只能在定义时被初始化一次,之后不可变;指针可变;
5)引用不能为空,指针可以为空;
6)“sizeof 引用”得到的是所指向的变量(对象)的大小,而“sizeof 指针”得到的是指针本身(所指向的变量或对象的地址)的大小;
7)指针和引用的自增(++)运算意义不一样;
8)从内存分配上看:程序为指针变量分配内存区域,而引用不需要分配内存区域。

19、 C语言编译

四个步骤
一、预处理阶段
展开头文件,宏替换,条件编译,去掉注释
二、编译阶段
检查语法错误,生成汇编代码
三、汇编阶段
把汇编代码转换成二进制机器码
四、链接阶段
将所有机器码链接在一起,生成可执行程序

20、 判断float类型数据与某个值是否相等

float类型数据的比较我们不能使用"=="、"!="等确定性的判别,必选要转换为">="、"<="等判别式

例如:判别float a是否为0

#include

21、链表

好文:【链表】链表常见笔试题和面试题(C语言)_C/C++_HongKnight的博客-CSDN博客

好文:数组和链表的区别浅析_网络_我的博客-CSDN博客

好文:判断一个链表是不是循环链表 - xshang - 博客园

22、为什么在定义结构体时成员变量不能赋初值?

TODO

22、声明和定义的区别?

TODO

23、回调函数深入理解

好文:回调函数(callback)是什么?

c语言eof_C语言持续深耕相关推荐

  1. c语言eof_C语言 技能提升 系列文章(十)错误处理

    在读写文件时,犯什么错误.这是很常见的,今天咱们就来看看C语言是如何处理这些文件读写错误的. int feof ( FILE * stream ); 这个API的作用是检查文件的EOF(end-of- ...

  2. C语言 | C语言深度解剖 ——章节2 符号

    C语言 | C语言深度解剖 --章节2 符号 C语言基本符号表 注释符号 // /* 几个似非而是的注释问题 y=x/*p 出色注释的基本要求 连接符和转义符 \ 单引号.双引号 花括号 运算符 10 ...

  3. 为什么我们需要一门新语言——Go语言

    编程语言已经非常多,偏性能敏感的编译型语言有 C.C++.Java.C#.Delphi和Objective-C等,偏快速业务开发的动态解析型语言有 PHP.Python.Perl.Ruby.JavaS ...

  4. 职工信息管理程序设计c语言,C语言程序设计职工信息管理系统.docx

    C语言程序设计职工信息管理系统.docx 1 数信学院数信学院 课程设计报告课程设计报告 课程名称课程名称C C 语言程序设计语言程序设计_ _ 题目名称题目名称职工信息管理系统职工信息管理系统 学生 ...

  5. c语言 python-C语言、Java语言和python语言的区别在哪里

    原标题:C语言.Java语言和python语言的区别在哪里 我们经常听到C语言.Java语言和python语言,那么这三者的区别在哪里呢?随着科技的进步以及新技术的推进,编程语言的种类也是越来越多,随 ...

  6. 程序设计语言python语言概述

    程序设计语言 什么是程序设计语言 程序设计语言是人类与计算机交流和沟通的语言.人们通过使用程序语言,来书写计算机程序,以达到设计的程序满足需求的目的. 程序语言的发展历史 程序语言经历了从低级语言到高 ...

  7. c语言吗 程序语言,编程语言为什么从c语言开始,那有没有a语言b语言呢?

    实际上没有A语言叫法. B语言 B语言是贝尔实验室的计算机先驱Ken Thompson 和 Dennis Ritchied与1969年设计开发.他们的主要其他功绩还有Unix操作系统和C语言.可以说C ...

  8. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua

    今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...

  9. 怎么理解python语言_Python语言入门1-理解Python语言

    本文主要向大家介绍了Python语言入门的理解Python语言,通过具体的内容向大家展现,希望对大家学习Python语言入门有所帮助. python是解释型的脚本语言 解释型语言 与C/C++等编译型 ...

最新文章

  1. 计算机信息检索文献综述论文,信息检索论文
  2. 计算机视觉--图像处理基础操作学习博客参考1
  3. OpenCASCADE:Foundation Classes数据类型
  4. 小说中场景的功能_如何让你的小说中的场景转换自如?
  5. 购物车的收货地址js php,Javascript实现购物车功能的详细代码
  6. mybatis学习(32):删除操作
  7. linux下proc目录,Linux /proc目录详解
  8. 推荐系列文章:《DotText源码阅读》
  9. java写入数组_如何在Java中将数组写入outputStream
  10. MySQL忘记root密码的解决办法
  11. weblogic漏洞复现(CVE-2020-2555)
  12. 亚信安全首推MSP创新型合作伙伴业务模式 助力企业畅享云端快捷服务
  13. 【收藏】图解最常用的10个机器学习算法!
  14. php微信商城 源代码下载,微信商城(B2C)独立后台版 php版 v1.0
  15. matlab求解平面度,基于MATLAB的平面度评定
  16. WinPE制作相关知识
  17. [论文]鲁棒的对抗性强化学习
  18. iOS第三方开源库的吐槽和备忘 - 王培
  19. 树莓派Linux内核配置、编译以及烧录详细步骤
  20. Vue2 带纵向合并的原生表格实现切割侧栏分页

热门文章

  1. ISCC——部分题wp
  2. 电脑计算机u盘启动不了桌面,开机进不了桌面怎么办?教你5招这样解决
  3. lstm预测股票_股票相关性与lstm预测误差
  4. python怎么输出复数_python基础知识及应用(二)输入输出|递归|深浅拷贝|全局变量|复数...
  5. 基于百度AI的人像识别开发的登录模块
  6. springboot--享学课堂
  7. 任正非回忆华为港湾“战争与和平”
  8. 画布Canvas在线生成支付宝收款码
  9. 17joys用户管理 添加用户
  10. 接口显示返回值正常,但是拿到的值却是undefined?