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. 快速构建Windows 8风格应用22-MessageDialog

    原文:快速构建Windows 8风格应用22-MessageDialog 本篇博文主要介绍MessageDialog概述.MessageDialog常用属性和方法.如何构建MessageDialog ...

  2. Android在View拉丝工艺和invalidate()和其他相关方法

      转载请注明出处:http://blog.csdn.net/qinjuning 前言: 本文是我读<Android内核剖析>第13章----View工作原理总结而成的,在此膜拜下作者 . ...

  3. linux sar 命令详解(转载)

    linux sar 命令详解 2013-04-01 11:05 [小 大] 来源: 开源中国社区 评论: 0 分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 手机游戏 iPhone游 ...

  4. .NET : 使用代码性能分析工具

    NET : CLR Profiler的使用 经常讲课的时候会提到值类型和引用类型,也会提到如何查看它们的大小.多次被朋友问到,如何真的想要知道到底每个方法分配了多少内存之类的问题,其实这可以通过CLR ...

  5. C#程序调用cmd.exe执行命令

    代码部分 using System.Diagnostics; public class CmdHelper { private static string CmdPath = @"C:\Wi ...

  6. [转]Patching the Mach-o Format the Simple and Easy Way

    From:http://secureallthethings.blogspot.jp/2014/08/patching-mach-o-format-simple-and-easy.html I'm r ...

  7. jquery选择器之基本过滤选择器

    <style type="text/css"> /*高亮显示*/ .highlight{ background-color: gray } </style> ...

  8. 利用ie的behavior属性兼容css3的一些属性

    behavior是从Internet Explorer 5开始引入的,是一种通过使用 CSS 向 HTML 元素添加行为的方法. 但是只有 Internet Explorer 支持 behavior ...

  9. iOS7 Sprite Kit 学习

    iOS7 Sprite Kit 学习 iOS 7有一个新功能 Sprite Kit 这个有点类似cocos2d 感觉用法都差不多.下面简单来介绍下Sprite Kit About Sprite Kit ...

  10. spring.net AOP通知类型

    上篇介绍了spring.net AOP的基本实现,其中有说到通知类型,首先在这里补充解释一下.最后出一个异常通知的实例,因为他的实现和别的通知有些不一样. 1.拦截环绕通知:在Spring中最基础的通 ...