笔试题2
来源:互联网 发布:学生电脑软件下载 编辑:程序博客网 时间:2024/06/15 17:35
1.要求逆序输出输入的字符串,并且不能用第三方变量
思想:递归
借助临时变量,将其字符串自身逆置
注意你要在reverse函数中对字符串进行改变,不能传字符串常量,因为在字符串常量区的字符串具有常性,不能修改,编译时会奔溃。可以传在栈区开辟的字符数组
2.有一个数组table,输出数组中有多少个元素
sizeof(table)/sizeof(table[0])
数组注意事项:数组名作为函数参数时候,系统会自动降级为指针
不能对数组名进行直接复制与比较。示例 2 7- 3- 2 中,若想把数组 a 的内容复制给数组的内容复制给数组 b ,不能用语句 b = a ,否则将产生编译错误。应该用标准库函数 strcpy复制。同理,比较 b 和 和 a 的内容是否相同,不能用 i f ( b==a) 来判断,应该用标准库函数 strcmp进行比较。
3.从标准输入读取n个整形,并将这n个整形存放在一个动态开辟的数组中,数组的第一个元素是整形的个数,以后依次是这些整形
1 2 3 4 5 6 7 8
8 1 2 3 4 5 6 7 8
4.编程题:输入一段字符串,并输出里面的字母个数,数字个数,空格个数,其他字符的个数
数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。
5.找错误
错误点:会出现乱码,返回了指向栈结构的"指针",在函数结束后栈区被系统释放。
正确理解指针参数是如何传递的:
1.试图用指针参数申请动态空间(不能完成)
把指针传进来,这种情况是值传递,形参相当于拷贝了一份实参,在GetMemory函数中,相当于只是给 p开辟空间,但是没有给实参开辟空间所以错误。
验证:如果指针值传递的话,只是指向同一块空间,但是要修改这个空间内容,必须空间不应该具有常性(char * str = "ABC"不行)
2.指向指针的指针动态开辟空间(可以完成)
址传递,相当于把str的地址传进来, p指向str , *p就是一级指针,对*p所指向的空间动态申请空间,相当于给str动态开辟空间
3.函数返回值来传递动态内存(可以完成)
在GetMerory函数中通过返回值开辟一个指定空间,然后再用str指向所开辟的空间,堆区开辟的空间要手动释放,free(str), 避免内存泄漏,str = NULL;赋空,,预防野指针。
- 思科笔试题2
- 笔试题2:
- 笔试题2
- java笔试题2
- 笔试题收集-2
- 百度笔试题2
- PHP笔试题2
- 中兴笔试题-2
- 笔试题2
- 笔试题2
- ios笔试题2
- c++笔试题(2)
- IBM笔试题2
- c#笔试题(2)
- 华为笔试题2
- 百度笔试题2
- 百度笔试题2
- c笔试题2
- Python3 类
- 线程的一种解决死锁的方式
- 77 Combinations(组合数)
- 自动装配、JavaConfig、XML 三种方案之间,怎么导入和混合配置?
- Struts2知识点回顾(二)Struts2项目准备和配置文件结构
- 笔试题2
- 敲程序时遇到的一些逗比问题
- 排序矩阵中的从小到大第k个数
- c3p0连接池NullPointerException
- 输出负数个数以及所有非负数的平均值
- 不重启机器(Centos)修改主机名
- mapnik的TextSymbolizer类的功能缺陷
- BZOJ 1188 分裂游戏 (博弈论)
- K-means聚类算法