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. js获取非行间样式或定义样式

    <!--DOCTYPE html--> <html> <head> <meta charset="utf-8" /> <sty ...

  2. 分享12款经典时尚的HTML5应用

    分享伟大,呵呵.今天给大家分享一下收集的12个HTML5小特效. 我整理一下源码,给大家打包一下,我博客园上传文件大小有限,传不了了. 需要的请留下邮箱就行了,觉得好的话,不要忘了点赞哦~ 1.CSS ...

  3. postal邮件发送(二):Email headers,附件,图片介绍

    接上篇 http://www.cnblogs.com/mybky/p/5690567.html 1.邮件headers 除此之外,还有Reply-To,用于回复邮箱 2.邮件带有图片 邮件发送图片,p ...

  4. 【转】android 欢迎界面翻页成效,仿微信第一次登陆介绍翻页界面

    android 欢迎界面翻页效果,仿微信第一次登陆介绍翻页界面 本实例做的相对比较简单主要是对翻页控件的使用,有时候想要做一些功能是主要是先了解下是否有现成的控件可以使用,做起来比较简单不用费太大的劲 ...

  5. Web应用和RESTful架构

    Web应用和RESTful架构 单页Web应用 概述 单页Web应用并不是突然诞生的一门新技术,而是web展示的一种新的尝试.它将所有的动作局限于一个Web页面,在加载站点首页的时候就加载站点需要的J ...

  6. 【分享】SAS统计分析软件学习教程电子书合集下载

    SAS是著名的统计分析软件,全称为Statistics Analysis System,最早由北卡罗来纳大学的两位生物统计学研究生编制,并于1976年成立了SAS软件研究所,正式推出了SAS软件. 转 ...

  7. iOS基础 - 瀑布流

    一.瀑布流简介 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pint ...

  8. iOS基础 - 定时器

    1.可以完成的功能:每隔一段时间做一些固定的事情 2.创建定时器 1> 方法1 NSTimer *timer = [NSTimer timerWithTimeInterval:1.5 targe ...

  9. 把《C语言接口与实现》读薄之第一章:引言

    1.1文学程序 文学程序(literate program):接口及其实现的代码与对其进行解释的正文交织在一起.文学程序由英文正文和带标签的程序代码块组成.例如, 〈compute x * y〉≡ s ...

  10. [转]How to compile GDB for iOS!

    ref:http://reverse.put.as/2012/04/16/how-to-compile-gdb-for-ios/ source code: http://www.opensource. ...