相关疑难解决方法(0)

将数组作为参数传递给C中的函数

我写了一个包含数组作为参数的函数,并通过传递数组的值来调用它,如下所示.

void arraytest(int a[])
{
    // changed the array a
    a[0]=a[0]+a[1];
    a[1]=a[0]-a[1];
    a[0]=a[0]-a[1];
}

void main()
{
    int arr[]={1,2};
    printf("%d \t %d",arr[0],arr[1]);
    arraytest(arr);
    printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);
}
Run Code Online (Sandbox Code Playgroud)

我发现虽然我arraytest()通过传递值调用函数,但原始副本int arr[]已更改.

你能解释一下原因吗?

c arrays

71
推荐指数
9
解决办法
16万
查看次数

如何将多维数组传递给C和C++中的函数

#include<stdio.h>
void print(int *arr[], int s1, int s2) {
    int i, j;
    for(i = 0; i<s1; i++)
        for(j = 0; j<s2; j++)
            printf("%d, ", *((arr+i)+j));
}

int main() {
    int a[4][4] = {{0}};
    print(a,4,4);
}
Run Code Online (Sandbox Code Playgroud)

这适用于C,但不适用于C++.

错误:

cannot convert `int (*)[4]' to `int**' for argument `1' to 
`void print(int**, int, int)'
Run Code Online (Sandbox Code Playgroud)

为什么它在C++中不起作用?需要做出哪些改变?

c c++ arrays multidimensional-array

42
推荐指数
6
解决办法
8万
查看次数

在 C/C++ 中将数组作为形式参数传递为 int arr[] 和 int arr[N] 之间的区别

我对接受的答案及其下面的评论感到困惑,这些评论在将数组传递给 C++ 中的函数中说明了相反的事情。

作为函数的形式参数,将数组作为int arr[]或传递给数组有什么区别int arr[N]吗?换句话说,void foo(int arr[])和之间有区别void foo(int arr[N])吗?

c c++ arrays

7
推荐指数
1
解决办法
495
查看次数

C ++使用ifstream读取文件

我对std::ifstream在C ++中使用有一些疑问。

大多数是我找不到答案的一般性问题,因此对其他人也可能有用。

无论如何,我使用#include <fstream>并做了一个变量char line[20]

有一个文本文件,其中包含几行模式jxxx(其中xs是数字),如下所示:

j1234
j5678
j1111
(等等)

因此,我这样做:

#include <iostream>
#include <fstream>

char line[20]
ifstream rfile;
rfile.open("path-to-txt-file");
while (!rfile.eof()) {
    rfile.getline(line, 20); (why is 20 needed here?)
    cout >> data >> endl;
    }
rfile.close();
Run Code Online (Sandbox Code Playgroud)

因此关注的是:

  1. 为什么getline方法中需要数字?

  2. 到底line有没有\0?因为当我们创建char像这样的var时char text[5]; text = "abc1",实际上将其另存为,"acd1\0"并且\n每一jxxx行之后的文件()中的末尾会发生什么?(我想在比这更复杂的代码中使用这些行,所以想知道)

  3. 程序会自动移动到下一行吗?如果没有,我如何告诉它转到下一行?

c++

2
推荐指数
1
解决办法
1万
查看次数

函数中的数组初始化

我有以下问题:让我说我有一些f类型的功能int.所以当我调用这个函数时f(a),首先发生的是函数内部的一个新变量被声明int x=a;这就是为什么如果一个函数void f(int a){a++}调用某个变量的函数不会改变它的值.

现在让我们说一个具有类型的功能int array[5].当我调用这个函数时会发生什么?我问的原因是因为我读到如果函数尝试初始化其他一些数组,它将无法工作a.

我想知道的另一件事是以下.将阵列int a[5]int b[6]被认为具有不同的数据类型?

c++

0
推荐指数
1
解决办法
155
查看次数

标签 统计

c++ ×4

arrays ×3

c ×3

multidimensional-array ×1