12).预处理指令

1. 什么叫做预处理代码.

以#开头的代码就是预处理代码  #warning #import

2. 手写1个C程序的步骤.(面试题)

1>编写代码

2>编译

1)执行.c中的预处理代码

2)检查语法

3>链接

4>执行

3. 预处理指令的分类.(面试题)  ******

1>文件包含指令  #include

2>宏定义  #define    (用来替换代码)

3>条件编译 #if  (满足一定的条件才编译)

4. 预处理指令的特点.

1>都是以#开头

2>后面没有分号

3>在编译的时候,检查语法之前进行

"注意

以#开头的代码就是预处理代码

13).sizeof运算符

sizeof运算符的作用?

作用:计算常量,变量在当前系统上内存中所占的字节数

sizeof (数据类型)

sizeof (变量)-----用的最多!

sizeof (常量)

注意,

char类型的变量在内存中占1个字节;

char类型的常量在内存中占4个字节;

综上所述,为了安全起见,sizeof后面最好加上括号!

14).按位异或

^ 异或运算

不同为1,相同为0

注意:

1 相同整数相^的结果是0;

2 一个整数^另一个整数2次结果不变 ; 3^2^2 = 3

3 整数相^跟顺序无关 3^2^3 = 2^3^3 = 2

15). 按位左移或者右移

1,按位左移运算. <<

参与按位左移运算的二进制数据. 向左移动指定的位数. 低位不够补0 高位溢出就丢弃

2,按位右移. >>

参与按位右移的二进制数据.向右移动指定的位数. 低位溢出丢弃,高位补符号位.

左移

1). 左移运算有可能会改变其正负性.

2). 将1个数左移n位,相当于将这个数乘以2的n次方.

右移

1). 右移运算不会改变正负性.

2). 将1个数按位右移n位.相当于这个数除以2的n次方.

16).深入变量的细节

一,变量在内存中的存储

1,在为变量分配字节空间的时候,是从高地址向低地址分配的

2,存储的时候,是低位存储在低字节,高位存储在高字节.

二,变量的地址

3,变量的地址是组成这个变量的低字节的地址.

4,使用&取地址可以取出变量的地址

17).数组地址问题

1.数组的地址 == 数组名 == 数组中的低字节的地址 == 数组中下标为0的元素的地址 == 数组中下标为0的元素的低字节的地址.

2,使用 %p 来打印数组名

18).二维数组与函数

1,当二维数组作为函数的参数的时]候.会丢失这个二维数组的行数和列数,解决方案是把行数和列数传递过来

2,当二维数组作为函数的参数的时候,要保证实参二维数组的列数必须要和形参二维数组的列数一致.

一个一劳永逸的方法是,写参数的时候,先写行数和列数,最后再写二维数组,然后二维数组的列数用参数指定.

void test2(int rows,int cols,int arr[][cols]);

19). 使用字符数组存储字符串注意的地方

1). 如果没有指定数组的长度.,那么数组的长度就为字符串的长度+1

2). 如果指定了长度,字符数组的长度就是指定的长度

3). 如果指定的字符数组的长度小于等于了字符串的长度,这个时候就会有问题了.

就会出现存储不下的情况.(不要指定长度)

4). 如果在声明1个字符数组的同时我们就初始化1个字符数据给这个数组,

那么这个时候是可以用中文.

20).指针

指针是一个数据类型,这数据类型可以用来定义变量,定义什么变量,指针变量,那这个指针变量是用来干什么的,专门用来保存地址的!

block是一个数据类型,这数据类型可以用来定义变量,定义的这个变量用来保存一段代码块!!

21). 指针作为函数的参数

1,指针作为函数的参数,在函数的内部去访问参数指针指向的变量的时候,其实访问的就是实参变量.

2, 指针作为函数的参数,可以实现什么效果?

函数的内部可以修改实参变量的值.

3. 什么时候需要将指针作为函数的参数?

当函数需要返回多个数据的时候就可以使用指针作为函数的参数.

如何实现的?

使用指针作为函数的参数. 让调用者将自己的变量的地址传递到函数的内部

函数的内部通过指针就可以修改实参变量的值.

4,返回数组最大值和最小值的思路

1>让调用者传递两个变量的地址给我.

2>让调用者自己先准备两个变量.然后将这两个变量的地址给我.

3>函数内部是不是可以通过指针 直接 修改 调用者的变量的值.

*pMax = max; //把最大值赋值给pMax指针指向的变量.

*pMin = min;//把最小值赋值给pMin指针指向的变量.

22).指针为什么要分类型

1, 指针变量的类型决定了 通过这个指针找到字节以后 连续操作多少个字节空间.

2, 指针的类型如果不和指向的变量的类型相同话. 那么通过指针就无法正确的操作指向的变量.

注意:

p1[n] = *(p1+n); 前提是p1是1个指针变量.

C语言总结2的更多相关文章

  1. C语言 · 高精度加法

    问题描述 输入两个整数a和b,输出这两个整数的和.a和b都不超过100位. 算法描述 由于a和b都比较大,所以不能直接使用语言中的标准数据类型来存储.对于这种问题,一般使用数组来处理. 定义一个数组A ...

  2. Windows server 2012 添加中文语言包(英文转为中文)(离线)

    Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...

  3. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  4. C语言 · Anagrams问题

    问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的.例如,"Unclear"和"Nuclear ...

  5. C语言 · 字符转对比

    问题描述 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等.比如 Beijing 和 Hebei 2:两个字符串不仅长度相 ...

  6. JAVA语言中的修饰符

    JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...

  7. Atitit 项目语言的选择 java c#.net  php??

    Atitit 项目语言的选择 java c#.net  php?? 1.1. 编程语言与技术,应该使用开放式的目前流行的语言趋势1 1.2. 从个人职业生涯考虑,java优先1 1.3. 从项目实际来 ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. InstallShield 脚本语言学习笔记

    InstallShield脚本语言是类似C语言,利用InstallShield的向导或模板都可以生成基本的脚本程序框架,可以在此基础上按自己的意愿进行修改和添加.     一.基本语法规则      ...

  10. 用C语言封装OC对象(耐心阅读,非常重要)

    用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象 ...

随机推荐

  1. PL/SQL Developer 连接Oracle数据库详细配置方法

    PL/SQL Developer 连接Oracle数据库详细配置方法 近段时间很多网友提出监听配置相关问题,客户终端(Client)无法连接服务器端(Server).本文现对监听配置作一简单介绍,给出 ...

  2. JQuery -&gt; 超级简单的下拉菜单

    使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...

  3. javascript 学习总结(四)Date对象

    1.Date.now() //Date.now() is in ECMAScript 5 //Prior to that, use +new Date() //获取当前时间 var now = (ty ...

  4. 【SSRS】入门篇(六) -- 分组和总计

    原文:[SSRS]入门篇(六) -- 分组和总计 通过[SSRS]入门篇(五) -- 设置报表格式的设计,一份简单格式的报表已产生,如下图: 这节来说说分组和总计: 根据日期.订单对数据进行分组 添加 ...

  5. 对sql进行分页处理(Oracle版)

    直接代码 /// <summary> /// 对sql进行分页处理 /// </summary> /// <param name="sql">& ...

  6. Javascript中布尔运算符的高级应用

    对象检测语句:var W3CDOM = document.getElementsByTagName && document.createElement 为了执行运算符&& ...

  7. Back to High School Physics - UVa10071

    欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/uva10071.html 题目描述 Pr ...

  8. 使用 HttpClient 进行连接

    对于System.Net.Http的学习(二)——使用 HttpClient 进行连接   对于System.Net.Http的学习(一)——System.Net.Http 简介  使用 HttpCl ...

  9. Vi编辑器入门

    Vi编辑器入门   vi编辑器是所有Unix及Linux系统下标准的编辑器,类似于windows上的记事本! 1.vi的基本概念  基本上vi可以分为三种状态,分别是命令模式(command mode ...

  10. Cracking the Coding Interview(Trees and Graphs)

    Cracking the Coding Interview(Trees and Graphs) 树和图的训练平时相对很少,还是要加强训练一些树和图的基础算法.自己对树节点的设计应该不是很合理,多多少少 ...