|
本帖最后由 李覃鹏 于 2020-1-16 11:39 编辑
是这样的,初学c++,看完21课后顺手做下课后作业,但蛋疼的是,照着思路做的解法没有问题,能正常的遍历完字符串中的字符。
如图片“原来的思路.png”
于是乎想将写死的方法内数组长度改为利用sizeof获得,即不论输入的字符串长度如何都可正确遍历字符。
如图片“更改数组长度后.png”
但却无法正确的遍历字符串数组中的字符,一顿操作后发现了问题所在。
如图片“问题所在.png”
就是想问下,sizeof为何同一个字符串的长度被传入方法后减少了两个。 求大佬们解答下。顺便上传代码压缩包。
麻烦问下第二个问题。就是传入方法内的数组,如何获取正确的数组长度呢?22课的课后作业也遇到了无法获取正确数组长度的问题,求各位大佬给个解答方法。就是下文代码中 dix<9的这个位置 无法获取数组长度 只能写死了。

- #include<iostream>
- #include<string>
- using namespace std;
- int get_min_max(int src[], int* min_v, int* max_v) {
- for (int idx = 0; idx <9; idx++) {
- *max_v = src[idx] > *max_v ? src[idx] : *max_v;
- *min_v = src[idx] > * min_v ? *min_v : src[idx];
- }
- return 0;
- }
- int main() {
- int a[9] = { 1,-2,3,4,7,4,8,9,3};
- int min = a[0];
- int max = a[0];
- get_min_max(a, &min, &max);
- cout << "最小值为: " << min << endl;
- cout << "最大值为: " << max << endl;
- return 0;
- }
复制代码
原来的思路
原因是数组当作函数参数时会退化成指针 所以是4个字节 你可以用strlen试试
|
上一篇: 有个大问题,请求大佬帮忙,关于电脑内存的(不是硬盘)下一篇: 求零基础学C++的21课的小作业思路
|