初识结构体 每次函数调用都会在栈区开辟内存,参数的存储也需要开辟内存,而传参的动作可以称为压栈,操作类似于步枪的弹夹我们要使用子弹必须先进行填装从上向下挤压,而使用子弹就要从下向上调出,传参传值是对参数的一份临时拷贝会占用双份的内存,而传地址则传递了原参数的地址,需要使用这个参数的时候可以直接通过地址找到参数进行解引用操作等。注:创建一个结构体冰不占用内存的空间,结构体的成员变量也可以是结构体。-堆区(heap):动态存储(非常大的内存池,非连续分配)-栈区(stack):局部变量存储(自动,连续的内存)
指针初步学习2 允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与只想第一个元素之前的那个元素位置的指针进行比较。指针+-指针等于这俩个指针之间元素的个数,必须是同一种指针类型才可进行相加减;1:sizeof(arr)指的是数组所占空间的大小。指针+ -整数跳过该指针类型大小的整数倍字节。指针的位置是位置的随机的不正确的没有限制的。指针数组 一个数组里面的元素是指针。2:&arr代表整个元素的地址。数组名就是数组首元素的地址。使用null来避免野指针。指针和数组之间的关系。
指针初步学习 重要:创建出一个指针变量代表四个字节,创建一个整型或其他类型的变量代表的意思完全不同。简而言之就是指针创建所使用内存空间的四个字节并不是用来存放自己设置的变量的。对于32位操作系统的平台,设有32根地址线假设每根地址线寻址的时候产生一个电信号(正1,负0)那么32根地址线产生的地址是。int是一个整型大小为四个字节,每一个字节对应一个内存单元的编号,取a的地址时区的是第一个内存单元的编号。*指针类型设置的不同,指针+1,-1时跳过的字节不同。*指针类型设置的不同,解引用时操作的字节就不同。
操作符学习 struct stu s1={“张三”,20,”2312312“}3:是否控制求值顺序(逻辑与,逻辑或,条件操作符,逗号表达式)逗号表达式从左向右依次进行但是判断结果使用的式最后一个表达式。即使知道了操作符的属性但是也不要写华而不实的代码。三木操作符:exp1?按位操作都是对原数的二进制序列进行操作。使用结构体创建了一个学生对象是s1。注:移位操作符不能用于负数。指针的大小和操作平台有关。单目操作符一个操作数。双目操作符俩个操作数。前置加加先加加后使用。这是结构体指针操作符。
数组学习111 再数组arr中其没有\0这个终止标志所以在用strlen求其字符串长度的时候无法识别到\0所以输出的为一个随机数,因为数组arr1[]中有,数组arr[]中没有\0所以很容易得出结果为433随机数。int arr[10]={1,2,3} 这其中就包括1,2,3,0,0,0,0,0,0,0 不完全初始化剩下的元素默认为0。而char arr[5]="ab" 这样的写法其中就包括a,b,\0 \0是检索字符串的终止标志。size of 是计算数组所占空间大小单位是字节是一个操作符。
c++学习 发文第一天 没有限制,导致程序运行一段时间跳出,这就是名为栈溢出(stack overflow)的错误,内存可以被划为三个区域:栈区 堆区 静态区 分别用来存放局部变量 形参 ,动态开辟的内存,全局变量 static修饰的变量。看似很简单的代码但是要计算出结果需要非常多的时间,例如我计算第50个斐波那契数我们就需要知道第48和第49个斐波那契数,而第48个数则需要知道第47和46以此类推计算量是非常大的。但是递归的并不优越于循环,有时候递归的效率会非常的地,比如这一道题。这是计算n的阶乘,同样使用了递归。