我写了一个包含数组作为参数的函数,并通过传递数组的值来调用它,如下所示.
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]);
}
我发现虽然我arraytest()通过传递值调用函数,但原始副本int arr[]已更改.
你能解释一下原因吗?
#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);
}
这适用于C,但不适用于C++.
错误:
cannot convert `int (*)[4]' to `int**' for argument `1' to 
`void print(int**, int, int)'
为什么它在C++中不起作用?需要做出哪些改变?
我对接受的答案及其下面的评论感到困惑,这些评论在将数组传递给 C++ 中的函数中说明了相反的事情。
作为函数的形式参数,将数组作为int arr[]或传递给数组有什么区别int arr[N]吗?换句话说,void foo(int arr[])和之间有区别void foo(int arr[N])吗?
我对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();
因此关注的是:
为什么getline方法中需要数字?
到底line有没有\0?因为当我们创建char像这样的var时char text[5]; text = "abc1",实际上将其另存为,"acd1\0"并且\n每一jxxx行之后的文件()中的末尾会发生什么?(我想在比这更复杂的代码中使用这些行,所以想知道)
程序会自动移动到下一行吗?如果没有,我如何告诉它转到下一行?
我有以下问题:让我说我有一些f类型的功能int.所以当我调用这个函数时f(a),首先发生的是函数内部的一个新变量被声明int x=a;这就是为什么如果一个函数void f(int a){a++}调用某个变量的函数不会改变它的值.
现在让我们说一个具有类型的功能int array[5].当我调用这个函数时会发生什么?我问的原因是因为我读到如果函数尝试初始化其他一些数组,它将无法工作a.
我想知道的另一件事是以下.将阵列int a[5]和int b[6]被认为具有不同的数据类型?