C语言之总结13

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,什么时候自己要定义枚举?

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

时间: 2024-10-25 14:13:34

C语言之总结13的相关文章

Perl语言学习笔记 13 目标操作

1.改变目录 chdir "/etc" or die "can't chdir to '/etc'!\n"; 省略参数会回到用户主目录,与cd效果一样: 2.文件名通配 my @all_files = glob "*"; #不包括以点号开头的文件 my @pm_files = glob "*.pm"; 一次匹配多种模式,用空格隔开:my @files = ".* *"; #可以匹配所有的文件,包括以点号开头

C语言程序设计第13次作业

一.本次课主要内容: 本章主要介绍结构的基本概念与定义.结构变量的定义和使用.结构数组应用.结构指针概念.重点介绍结构的定义与成员引用方式.同时也介绍了文件的基本概念,文件操作处理基本步骤和过程,常用文件操作函数等知识. (1)通过综合示例"输出平均分最高的学生信息"引出结构的概念和主要知识点.重点学习了结构变量使用的三种情况:结构成员引用方式.相同类型结构变量的相互赋值.结构变量作为函数参数. (2)通过例子"学生成绩文件统计"引出文件的基本概念和主要知识点,实现

嵌入式C语言自我修养 13:总结

13.1 总结 前面12节的课程,主要针对 Linux 内核中 GNU C 扩展的一些常用 C 语言语法进行了分析.GNU C 的这些扩展语法,主要用来完善 C 语言标准和编译优化.而通过 C 标准的发展过程我们又发现,对于一些编译器扩展的一些特性,或者其它编程语言(如:C++)中的好的特性和语法,C 标准也会适时地吸收进来,作为新的 C 语言标准. 在 GNU C 的这些扩展语法中,attribute 和宏定义是两大特色.在嵌入式底层系统中,尤其是 Linux 内核和 U-boot 中,大量使

【Go语言】【13】再谈GO语言的结构体

本文从如下四个方面再领着大家认识结构体 匿名结构体和匿名成员的结构体 值传递和引用传递 再谈嵌套结构体 面向对象 1.匿名结构体和匿名成员的结构体 如上篇所述,一个结构体需要先声明,再初始化,最后把初始化后的结构体赋值给其它变量,例如: /*声明结构体*/ type employee struct{ name,address string height,weight float64 } /*初始化结构体,并赋给变量emp*/ emp := employee{name:"eagle",

C语言之函数调用13—递归法求N阶勒让德多项式的值

//递归法! /* ======================================================= n阶勒让德多项式,n=1时,Pn(x)=x;n>=1时, Pn(x)=((2n-1)x-Pn-1(x)-(n-1)Pn-2(x))/2. ======================================================= */ #include <stdio.h> #include <math.h> double p(

zerglurker的C语言教程009——运算符详解(一)

在之前几节我们讲过数据类型.讲过函数.讲过代码执行顺序以及一些添加简单函数的方法. 这一节我们将着重讲讲运算符.包括运算符的含义以及优先级的概念 在C语言中,以下运算符是被公认的: C/C++语言运算符详解 优先级 运算符 名称以及含义 运算目 使用示例 结合方向 可否重载 附加说明 无 () 圆括弧 单目 (表达式) 无 否 括弧内的表达永远先计算 无 dynamic_cast<>() 类型动态转化 单目 dynamic_cast<目标类型>(源) 无 否 C++专有,不能转换返

C语言之函数调用19—总结

C程序的函数调用共涵盖18个例题,包含了递归.递推.字符串操作.矩阵操作.格式输出等内容. 相比之前的基本算法,函数调用已经初见其效率,至此,相信大家对函数调用也有了比较好的认识,就是先表达出功能,当要解决问题时,只要简单调用即可.我们常常会听说C的强大,也是因为她有着调用函数的功能,而且函数可以自己实现. 接下来作者会推出文件操作的基础编程方法,希望大家能够共同进步. 不积跬步无以至千里!共勉! 二〇一五年八月二日  夜 附: C语言之函数调用18-多字符串排序 2015-08-02 01:0

Perl语言学习笔记 10 其他控制结构

1.unless控制结构 条件为假时执行,与if相反 可以附带else 2.Until控制结构 条件为假时执行,一直执行到条件为真: 3.条件修饰词 效果等同于: 类似的模式: 4.裸块控制结构 { body; body; .... } 有利于为临时变量圈定有效范围 5.elsif子句 6.自增.自减 同c语言 7.for 用法同c语言 8.for与foreach 在perl中,两者等价,优先选择纯正的foreach 9.5种循环块:for.foreach.while.until.裸块 last

Java基础语言视频

java语言教程-第01讲-Java考古学java语言教程-第02讲-Java创世纪java语言教程-第03讲-Java基本概念java语言教程-第04讲-Java的变量java语言教程-第05讲-Java的基本数据类型java语言教程-第06讲-练习课(一)java语言教程-第07讲-运算符与表达式java语言教程-第08讲-分支语句java语言教程-第09讲-练习课(二)java语言教程-第10讲-循环语句 java语言教程-第11讲-练习课(三)java语言教程-第12讲-面向对象基础(一