中南林业科技大学软件协会2022.10.8问题总结

问题总结:2022.10.8

1.关于进制问题:

一串数字,如果以H结尾或者0X开头,为16进制数字;

一串数字,如果以O结尾,为8进制数字;

2.关于数组和链表的对比优劣:

链表特性:由于不使用下标进行索引,可以通过相邻节点的操作来增加元素和删除元素(数据结构会学到),增加元素和删除元素较易;

数组特性:通过下标索引,所以查询和修改会比较方便;

通常情况下通过不同需求使用不同的数据结构;

3.链表堆区节点衍生出的内存四区的问题:

有同学写了c语言的官网题目,关于malloc提出了疑问,malloc函数是c语言用户手动在堆区开辟一段定长的内存。

首先介绍一下内存四区中的栈区和堆区,每个变量都会在计算机中存在地址

栈区:在函数中初始化的变量的地址放置在栈区,但栈区空间较小

堆区:c语言可以使用malloc函数对变量在堆区开辟空间,c++语言可以使用new函数在堆区开辟空间。

但是由于c和c++并没有垃圾回收机制(区别于Java可以由系统自动释放无用内存(GC垃圾回收机制))。

当不需要该变量(对象)需要使用free函数(c语言释放内存函数)和dalete函数(c++释放内存函数)将malloc函数和new函数开辟空间的变量内存释放掉

4.Visual Studio报错之"scanf_s"问题:

由于vs的安全机制等特性,不允许使用scanf,但是后续版本中推出了scanf_s类型的安全输入函数(放心使用)

5.Visual Studio报错之"无法解析的外部命令"问题:

该文件下:

(1)无main函数;

(2)函数只声明却没定义函数体;

(3)文件创建错误(创建时并不是c++源文件);

其他文件的问题:

(1)在其他项目中也存在main函数;

6.关于前置++和后置++的问题

w++和++w的效率问题:++w的效率大于w++

对于大部分编译器来说:

前置++:

对于表达式的顺序,首先执行++操作之后再进行表达式操作,所以(1)操作等价于(2)和(3)操作,b=12

a=1;
​
b=(++a)+(++a)+(++a);//(1)
//b=12
​
++a,++a,++a;//(2)
b=a+a+a;//(3)

后置++:

对于表达式的顺序,首先进行表达式操作之后再执行++操作,所以(4)操作等价于(5)和(6)操作,b=3

a=1
b=(a++)+(a++)+(a++);//(4)
//b=3
​
b=a+a+a;//(5)
a++,a++,a++;//(6)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值