- 博客(8)
- 收藏
- 关注
原创 4.C++函数提高
是正确的,int int func(int a,int b=10,int c)就是错误的。这是因为此时的编译器不知道func(10),10是赋值给func(int a,int b=10),还是给func(int a)。void wow(int n=1)中的n设为默认值1,函数调用wow(2)还是相当于相当于wow(2)。例如将void wow(int n=1)中的n设为默认值1,函数调用wow()相当于wow(1)。C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
2023-12-02 17:18:50 239
原创 3.C++引用(&)
这是赋值操作,将b的值赋给c,此时c的值为20,因为a,c指向的是同一块内存空间,a也就跟着c变为了20。这是因为,局部变量的值位于栈区,等到函数结束以后,内存会直接释放,我们无法访问。是错误的, 因为引用本身需要一个合法的内存空间,因此这行错误。结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。通过上述代码和结果,我们可以看出a,b,c指向同一个地址空间,并没有自己新开辟一块新的空间。此时c也指向a的内存空间,这时a,c的值都是10;
2023-12-01 19:50:05 49 1
原创 2.C++使用new动态开辟内存空间
上述代码就不能正常运行,因为局部变量存放在栈区,func运行结束以后,系统就会自动释放其空间。通过上述两个代码的比较,我们发现new的优势--可以延长数据的寿命。new开辟的空间是在堆区里面,我们需要自己手动释放其空间。如果使用new[]为数组分配内存,则因使用delete[]来释放。堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符。利用new创建的数据,会返回该数据对应的类型的指针。我们通过使用[]来表示我们释放的是数组的空间。当我们释放整个数据的内存空间时,我们需要使用。
2023-11-27 19:44:19 623 1
原创 1.C++内存分配模型
数据类型 * 数据名=new 数据类型(数据值) ,其返回的是开辟空间的地址:例如代码中的,int* a=new int (10);全局区还包含了常量区, 字符串常量和其他常量(全局常量)也存放在此.的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程。常量区中存放 const修饰的全局常量 和 字符串常量。代码区:存放函数体的二进制代码,由操作系统进行管理的。
2023-11-25 18:15:43 48
原创 C语言的数据类型
a是char类型数据,最高位是符号位1,整型提升时需要将空缺的位补符号位,所以提升以后的a:11111111111111111111111111111111(补码),其原码是-1。因为%d需要输出的是整型的数据,a,b,c都是char类型的数据,所以需要整型提升。最高位是0,所以其原码,反码,补码相同,其原码255。大端:数据的低位存放在内存的高地址中,数据的高位存放在内存的低地址中;小段:数据的低位存放在内存的低地址中,数据的高位存放在内存的高地址中;b,c也都为-1,它们中存放的也是11111111。
2023-11-14 17:52:45 39
原创 C语言求“单身狗“—求数组中只出现一次的数字
如果一个数组中只有一个”单身狗“,我们只需要将数组里面的元素都进行异或操作即可,这时异或的结果就是我们的”单身狗“.如果一个数组中有两个”单身狗“
2023-11-13 20:42:54 51
原创 C语言常见习题—位段
1. 位段的成员必须是int, unsigned int ,signed int,short或者char等。就是错误的,int数据类型占用了4个字节,32个比特位,:后面的数字不能大于32。数字是表示变量需要的比特位(二进制位)。数字不能大于该数据类型所占用的比特位数。图中填写的使用的比特位,空白的是舍弃的比特位。在回答上述问题之前,我们需要先了解位段的知识。2.位段的成员名后面有一个。求上述代码的运行结果;
2023-11-13 17:49:53 29
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人