标签:变量 通过 局部变量 函数 内存 多个 应该 int 注意
a. 栈
是专门用来存储局部变量的.所有的局部变量都是声明在栈区域中的.
b. 堆
允许程序员手动的从堆申请空间来使用.(对象)
c. BSS段
是用来存储未初始化的全局变量和静态变量.
d. 数据段/常量区
用来存储已经初始化的全局变量、静态变量.还有常量数据.
e. 代码段
用来存储程序的代码/指令.
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";//不能修改常量区的字符串数据(不可变)
//以字符指针的形式存储字符串数据,不管是全局的还是局部的,都不能通过指针去修改指向的字符串数据.
1,以字符指针的形式存储字符串的时候,字符串数据能不能修改,为什么?
不能修改,因为它是存在常量区的.
2,以字符指针的形式要将字符串数据存储到常量区的时候,是不是直接将字符串存储到常量区?
不是,先检查常量区中是否有相同内容的字符串,没有的话才会存储.
"注意
3, char* name3 = "jack";
name3 = "rose";这里为什么能改?
这里并不是修改原来的字符串. 而是重新的创建了1个字符串("rose"),把这个新的字符串的地址赋值给它.
1,const的特点:
被const修饰的变量.是只读变量,只能取值.而不能改值.
2,使用场景:
1> 当某些数据是固定的,在整个程序运行期间都不会发生变化. 并且你也不允许别人去修改.
那么这个时候,我们就可以使用const.
2> 当函数的参数是1个指针的时候,为了防止函数的内部修改实参变量的值.
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修饰的变量我们叫做只读变量.
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和谁靠的近,就限制谁
1,指针作为函数的参数.
1>在函数的内部可以通过这个参数指针去修改实参变量的值.
2>可以实现函数有多个返回值
2,什么是指针函数(返回值是指针的函数)
本质就是一个函数,这个函数的返回值是一个指针!
3, 指针作为函数的返回值的注意点
1). 可以返回局部变量的值. 但是不能返回局部变量的地址.
2). 如果你非要返回指针,那么就应该把这个空间申请在堆区.
1,要先定义结构体类型 才可以根据这个类型声明变量
2,结构体变量也是1个变量,所以也可以批量声明
3,定义结构体名称的时候,要求首字母大写
4,在声明结构体类型的同时,可以定义结构体变量
5,匿名结构体
1). 相同结构体类型的变量之间绝对是可以相互赋值的.
2). 结构体变量之间的赋值原理
将源结构体变量中的每一个成员的值 拷贝一份 赋值给 目标结构体变量中对应的成员
3). 结构体变量之间赋值 是值传递.
1,如何创建一个枚举类型
enum 新类型名称
{
限定取值1,限定取值2,限定取值3,......
};
enum Sex
{
SexMan,
SexWoman,
SexYao
};
2,声明枚举类型的变量
enum 枚举类型名称 变量名; // enum Sex s;
3,枚举变量的初始化
只能为这个枚举变量赋 枚举类型 限定的 取值之一.// s = SexYao;
4,什么时候自己要定义枚举?
变量的取值有限定的几个范围,就可以用枚举
标签:变量 通过 局部变量 函数 内存 多个 应该 int 注意
原文地址:http://www.cnblogs.com/jialiangliang/p/6081580.html