什么是标识符? 标识符是用来标识变量、函数、类、模块,或者任何其他用户自定义项目的名称,用它来命名程序正文中的一些实体,比如函数名、变量名、类名、对象名等。如:int a1=0; const b1="hello"中 a1和b1都是标识符,不过a1是变量,也就是存储单元的标识符,b1是数据字符串的标识符

什么是关键字?关键字是C语言提供的有特殊含义的符号,也叫做“保留字”。C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 如: while include if else define const 等等

c程序运行的实质

就是执行环境程序顺序解析每个语句再执行的过程,解析语句也称为解释语句,就是按照关键字和标识符代表的含义来解释成执行动作。

如 int a1=1; a1=a1+1;这两句:

第一句,int a1=0 :执行环境顺序读到"int "关键字了,就知道需要声明4个字节的空间,看到a1,就知道要作下记号,标记a1作为这4个字节空间(盒子)的记号,然后给a1所代表的这个盒子赋值为0;

第二句,a1=a1+1, 先从等号右边开始解释,看到等号右边的a1了,就是要读取a1代表的盒子里面的数值,读取就是复制,读取后,将数值加1,然后将新数值赋值给等号左边的a1盒子

指针变量作为用于存储地址的变量,操作方法和上述完全一样。

总而言之,就是:盒子(也就是变量)可以读取、赋值,数值只能读取。

特殊写法的标识符,*变量名 与 数组名[],如语句 *s1= s0[0]; s0[0]与*s1都是代表变量盒子的标识符,不要理解成为操作符。

c语言语法不严格使人造成的误解:

1 char *p0;的声明 注意 char *p0=null; 其实正确写法应是 char* p0=null;但两种写法编译都可通过,前种写法容易使人误解为在声明char类型变量。

2 函数参数中关于数组的声明 如 int func(char[] c1) int func(char[10] c1) int func(char* c1) int func(char *c1) 如 int func(char[] c1)   int func(char[10] c1)  int func(char* c1)   int func(char *c1) 这四种声明方式都可传送字符串指针,实现相同的目的。但前两者效果一样,都是声明了字符数组型空间,后两者本质与前两者不同,是声明了字符型指针变量空间。四种写法很容易让人误解,特别是第二种,无任何意义 ,实际传参时,无论数组元素数大于或小于10都不受影响。

c语言的函数参数不允许数组作为一个整体传值,要实现传递数组,只能依靠传递数组的指针变量来实现。

c程序容易引起迷惑的地方 *的含义

如下面两句 char *p1=”hello”;//这句话的*不是标识符,是操作符,是在声明p1是个指针型变量。

*p1='w';//这句话的*却是标识符,不是操作符,*和p1合在一起标识数组"he"第一个元素所在的存储盒子

程序代码重点举例

#include<stdio.h>
int main()
{
char a1='2';
char* p0="world";//这个声明的意思是,声明一个用于存放char型地址的存储单元,并在这个存储单元里赋予字符串"world"的地址
char *p1="hello";//这种声明格式是c语言语法不严格的一个bug,容易让人误解,以为是声明char类型变量,其实是在声明地址变量,
//*p0=*p1;//不能运行 *p0标识字符串"world"的第一个字符所在的存储单元,但这个存储单元位于程序控制区,不能被赋值,只能读取
//&a1=3;//不能运行 ,因为 &a1 这个标识符代表数字2 ; 2不是变量盒子,所以不能被赋值,只能被读取
char s0[10]="123456";//这个声明的意思是,首先分配10个字符的存储单元(这十个存储单元统称为数组),然后利用"123456"这个字符串,给每个存储单元顺序赋值,所以此句声明的不是字符串,声明的是数组
char s1[20]="abcdefghijk";
*s1 =*s0;//可以运行 注意:*s0中的*不是运算符,在这里是标识符 ,*s0标识字符串"123456"的第一个字符所在的变量盒子,在这里被读取值"1",*s1标识字符串"abcdefghijk"的第一个字符所在的变量盒子,在这里被赋值
p0=&a1;//可以运行
*s1= s0[0];//可以运行
// s0 =&a1;//不能运行,s0不代表变量盒子,s0是标识符,代表数组第一个元素的地址数值,s0[0]才代表该数组第一个元素所在的变量盒子
s0[0]=a1;//可以运行 a1作为变量盒子,被读出'2'这个字符, s0[0]是个标识符,标识字符串"123456"的第一个字符所在的变量盒子,因此可以被赋值
}

后记:学习离不开上网查阅资料记录笔记,为方便记录网页资料记录笔记,本人为chrominmu类浏览器如chrome、edge等开发了个名为网风笔记的扩展插件,可方便帮助采撷记录网页的文章、段落、图片、多媒体等,并提供文章管理后台以方便整理收藏。特别是针对某sdn,某网页图书馆等限制复制的网页有良好的辅助作用。除此之外,网风笔记还有音视频下载、截图涂鸦、一键提取文章、自由点选段落、快捷打印成A4格式文档、网页笔记编辑整理、定向发布等等功能,可以说是喜欢网上学习采集资料的好帮手,现免费提供给大家使用。喜欢的朋友可自行百度搜索下网风笔记安装使用。

c语言学习总结(原创)的更多相关文章

  1. 12天学好C语言——记录我的C语言学习之路(Day 12)

    12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...

  2. 12天学好C语言——记录我的C语言学习之路(Day 11)

    12天学好C语言--记录我的C语言学习之路 Day 11: 因为指针部分比较的难,所以我们花费的时间也是最长的,希望大家耐的住性子,多多理解,多多打代码.好了,废话不多说,来看第11天的学习. //编 ...

  3. 12天学好C语言——记录我的C语言学习之路(Day 10)

    12天学好C语言--记录我的C语言学习之路 Day 10: 接着昨天的指针部分学习,有这么一个题目: //还是四个学生,四门成绩,只要有学生一门功课没及格就输出这个学生的所有成绩 /*//progra ...

  4. 12天学好C语言——记录我的C语言学习之路(Day 9)

    12天学好C语言--记录我的C语言学习之路 Day 9: 函数部分告一段落,但是我们并不是把函数完全放下,因为函数无处不在,我们今后的程序仍然会大量运用到函数 //转入指针部分的学习,了解指针是什么 ...

  5. 12天学好C语言——记录我的C语言学习之路(Day 8)

    12天学好C语言--记录我的C语言学习之路 Day 8: 从今天开始,我们获得了C语言中很有力的一个工具,那就是函数.函数的魅力不仅于此,一个程序到最后都是由众多函数组成的,我们一定要用好函数,用熟练 ...

  6. 12天学好C语言——记录我的C语言学习之路(Day 7)

    12天学好C语言--记录我的C语言学习之路 Day 7: 昨天进行了一天的数组学习,今天大家可以先写几个昨天的程序热热身,回顾回顾,然后今天第一个新程序也是关于数组的,比较难,准备好就开始啦! //输 ...

  7. 12天学好C语言——记录我的C语言学习之路(Day 6)

    12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n;   scanf("%d,& ...

  8. 12天学好C语言——记录我的C语言学习之路(Day 5)

    12天学好C语言--记录我的C语言学习之路 Day 5: 第五天的学习开始了,今天我们主要对几个程序进行编写,让自己充分的熟练编程语言,大量的题目会让自己变的精炼.以一个程序(program 5.1) ...

  9. 12天学好C语言——记录我的C语言学习之路(Day 4)

    12天学好C语言--记录我的C语言学习之路 Day 4: 首先来看一段程序: //输出下面4*5的矩阵 /* 1  2  3   4   5 2  4  6   8   10 3  6  9   12 ...

  10. 12天学好C语言——记录我的C语言学习之路(Day 3)

    12天学好C语言--记录我的C语言学习之路 Day 3: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很 ...

随机推荐

  1. springmvc 上传文件时的错误

    使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...

  2. 驱动开发:内核中实现Dump进程转储

    多数ARK反内核工具中都存在驱动级别的内存转存功能,该功能可以将应用层中运行进程的内存镜像转存到特定目录下,内存转存功能在应对加壳程序的分析尤为重要,当进程在内存中解码后,我们可以很容易的将内存镜像导 ...

  3. Es 学习笔记 (1)

    目录 前言 什么是es? es数据组织类比 应用场景 核心概念 集群 节点(node) 索引(Index) 文档类型(Type) 文档(Document) Mapping 核心简单域类型 分片(sha ...

  4. Linux-->磁盘分区,挂载

    Linux分区 原理介绍 Linux无论有几个分区,分给哪一个目录使用,他归根结底都只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分. Linux采用了一 ...

  5. 测试Thread中的常用方法:

    测试Thread中的常用方法:start():启动当前线程:调用当前线程的run()run(): 通常需要重写Thread类中的此方法,将创建的线程要执行的操作声明在此方法中currentThread ...

  6. 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

    Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...

  7. 一天十道Java面试题----第一天(面向对象-------》ArrayList和LinkedList)

    这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.面向对象 2.JDK.JRE.JVM区别和联系 3.==和equals 4.final 5.String .Strin ...

  8. python不确定性计算之模糊动态聚类实验

    模糊动态聚类实验 本实验所采用的模糊聚类分析方法是基于模糊关系上的模糊聚类法,也称为系统聚类分析法,可分为三步: 第一步:数据标准化,建立模糊矩阵 第二步:建立模糊相似矩阵 第三步:聚类 本程序读取E ...

  9. PX01关于手机屏IIC触摸调试学习笔记

    相关文件下载: 上位机工具:http://www.xk-image.com/download/blog/0002_TP调试/LcdTools20210605.rar 调试案例:http://www.x ...

  10. IP分类与子网划分

    1.IP地址的格式  每一类地址都由两个固定长度的字段组成: (1)网络号 net-id:它标志主机(或路由器)所连接到的网络 (2)主机号 host-id:它标志该主机(或路由器).   最大可指派 ...