23). 内存中的五大区域

a. 栈

是专门用来存储局部变量的.所有的局部变量都是声明在栈区域中的.

b. 堆

允许程序员手动的从堆申请空间来使用.(对象)

c. BSS段

是用来存储未初始化的全局变量和静态变量.

d. 数据段/常量区

用来存储已经初始化的全局变量、静态变量.还有常量数据.

e. 代码段

用来存储程序的代码/指令.

24). 存储字符串数据的两种方式的区别

1). 当他们都是局部变量的时候.

char name1[] = "jack";//name1存在栈区,"jack"存在name1这个数组里面

char *name2 = "rose";//name2存在栈区."rose"存在常量区(字符数组的形式)

2). 当他们作为全局变量的时候.

char name1[] = "jack";//name1存在常量区,"jack"存在name1这个数组里面

char* name2 = "rose";//name2存在常量区,"rose"存在于常量区(字符数组的形式)

3). 二者区别

char name1[] = "jack";//可以修改字符数组的元素(可变的)

char* name2 = "rose";//不能修改常量区的字符串数据(不可变)

//以字符指针的形式存储字符串数据,不管是全局的还是局部的,都不能通过指针去修改指向的字符串数据.

25). 字符串的恒定性

1,以字符指针的形式存储字符串的时候,字符串数据能不能修改,为什么?

不能修改,因为它是存在常量区的.

2,以字符指针的形式要将字符串数据存储到常量区的时候,是不是直接将字符串存储到常量区?

不是,先检查常量区中是否有相同内容的字符串,没有的话才会存储.

"注意

3, char* name3 = "jack";

name3 = "rose";这里为什么能改?

这里并不是修改原来的字符串. 而是重新的创建了1个字符串("rose"),把这个新的字符串的地址赋值给它.

26). const

1,const的特点:

被const修饰的变量.是只读变量,只能取值.而不能改值.

2,使用场景:

1> 当某些数据是固定的,在整个程序运行期间都不会发生变化. 并且你也不允许别人去修改.

那么这个时候,我们就可以使用const.

2> 当函数的参数是1个指针的时候,为了防止函数的内部修改实参变量的值.

27). const修饰基本数据类型和数组

1,const修饰基本数据类型的变量(只能去取值,而不能去修改)

const int num = 10;// 等同于int const num = 10;

2,const修饰数组.(数组的元素的值不能修改)

const int arr[4] = {10,20,30,40};//等同于int const arr[4] = {10,20,30,40};

总结:被const修饰的变量我们叫做只读变量.

28). const修饰指针

1). const int* p1 = #

无法通过p1指针去修改指针指向的变量的值. 但是可以改变指针变量的值.

2). int const * p1 = #

等同于上面

3).  int  * const p1 = #

p1的值不能修改,但是可以通过p1去修改p1指向的变量的值.

4).  int const  * const p1 = #

既不能修改p1的值,也不能通过p1去修改p1指向的变量的值

规律:const和谁靠的近,就限制谁

29).指针与函数

1,指针作为函数的参数.

1>在函数的内部可以通过这个参数指针去修改实参变量的值.

2>可以实现函数有多个返回值

2,什么是指针函数(返回值是指针的函数)

本质就是一个函数,这个函数的返回值是一个指针!

3, 指针作为函数的返回值的注意点

1). 可以返回局部变量的值. 但是不能返回局部变量的地址.

2). 如果你非要返回指针,那么就应该把这个空间申请在堆区.

30). 使用结构体注意

1,要先定义结构体类型 才可以根据这个类型声明变量

2,结构体变量也是1个变量,所以也可以批量声明

3,定义结构体名称的时候,要求首字母大写

4,在声明结构体类型的同时,可以定义结构体变量

5,匿名结构体

31). 结构体变量之间的相互赋值

1). 相同结构体类型的变量之间绝对是可以相互赋值的.

2). 结构体变量之间的赋值原理

将源结构体变量中的每一个成员的值 拷贝一份 赋值给 目标结构体变量中对应的成员

3). 结构体变量之间赋值 是值传递.

32).枚举的简单实用

1,如何创建一个枚举类型

enum 新类型名称

{

限定取值1,限定取值2,限定取值3,......

};

enum Sex

{

SexMan,

SexWoman,

SexYao

};

2,声明枚举类型的变量

enum 枚举类型名称 变量名; //  enum Sex s;

3,枚举变量的初始化

只能为这个枚举变量赋 枚举类型 限定的 取值之一.// s = SexYao;

4,什么时候自己要定义枚举?

变量的取值有限定的几个范围,就可以用枚举

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

  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. IT行业新名词--透明手机/OCR(光学字符识别)/夹背电池

    透明手机 机身设计的一大关键部分是可替换玻璃的使用,利用导电技术,在看不到线路的环境下,让LED发光. 这样的玻璃内含液晶分子,对于内容的显示则是通过电流对分子的刺激来实现.当手机断电后,分子位置会随 ...

  2. AMDBarUtility Update Ditection Page

    Current version is : #################### #060901# #################### DO NOT REPLY!!!

  3. javascript 正则介绍

    1.正则直接量字符 \o NUL字符(\u000)\t 制表符\n 换行符(\u000A)\v 垂直制表符\f 换页符\xnn 由16进制nn指定的拉丁字符\uXXXX 由16进制XXXX指定的unc ...

  4. 完整的堆栈JavaScript路(十五)HTML5 focus 扩大 (扩展点)

    HTML5 加入辅助管理 focus 产品特点,  有办法获得焦点文档; 页面加载,用户输入(通常由tab债券).和 调用代码focus()功能. HTML5新的属性和方法,辅助管理的重点: docu ...

  5. java中实现与.net的format格式化字符串输出

    Java中的格式化字符串 System.out.println(MessageFormat.format("name={0}", "张三")); .net中的格 ...

  6. Asp.Net Web Api 接口

    如何让你的 Asp.Net Web Api 接口,拥抱支持跨域访问.   由于 web api 项目通常是被做成了一个独立站点,来提供数据,在做web api 项目的时候,不免前端会遇到跨域访问接口的 ...

  7. 学点c++

    描述现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现在要求按照一下方式排序(默认排序规则都是从小到大): 1.按照编号从小到大排序 2. ...

  8. OSGi.NET 学习笔记

    OSGi.NET 学习笔记 [目录]   持续更新和调整中,本人学习笔记,非官方文档,难免疏漏,仅供参考. OSGi.NET SDK下载地址. 前言及环境准备 模块化和插件化 概念 实例 小结 面向服 ...

  9. iOS基础 - CALayer

    一.CALayer简介 Core Animation是跨平台的,支持iOS环境和Mac OS X环境 凡是支持跨平台的框架,都不能直接使用UIKit框架,因为UIKit框架只能应用在iOS而不能用于M ...

  10. HttpClient的使用-爬虫学习(一)

    Apache真是伟大,为我们提供了HttpClient.jar,这个HttpClient是客户端的http通信实现库,这个类库的作用是接受和发送http报文,引进这个类库,我们对于http的操作会变得 ...