这些代码行是做什么的?它涉及指针和数组 我是C和C++的新手,我只使用java语言中的数组和多维数组。 我正在尝试迁移一些代码,我需要知道这些行的含义: int rows = 100; int columns = 10; int i,j; double *example = new double[rows*columns]; File fileEx = fopen("exampleText.txt","r"); for(i=0;i<rows;i++) for(j=0;j<columns;j++){ fscanf(fileEx, "%lf", example+columns*i+j); //printf("%f ", *(example+columns*i+j)); } int行=100; int列=10; int i,j; double*示例=新的double[行*列]; 文件fileEx=fopen(“exampleText.txt”、“r”); 对于(i=0;i

这些代码行是做什么的?它涉及指针和数组 我是C和C++的新手,我只使用java语言中的数组和多维数组。 我正在尝试迁移一些代码,我需要知道这些行的含义: int rows = 100; int columns = 10; int i,j; double *example = new double[rows*columns]; File fileEx = fopen("exampleText.txt","r"); for(i=0;i<rows;i++) for(j=0;j<columns;j++){ fscanf(fileEx, "%lf", example+columns*i+j); //printf("%f ", *(example+columns*i+j)); } int行=100; int列=10; int i,j; double*示例=新的double[行*列]; 文件fileEx=fopen(“exampleText.txt”、“r”); 对于(i=0;i,c++,C++,,它一次读取一个二维数组中的double值 example+columns*i+j在每次迭代中生成一个指向数组右元素的指针 话虽如此,数组被分配为1-D数组,程序将在每次访问数组元素时使用计算进行订阅 代码在使用前应检查文件(是否为文件?)已成功打开。检查fscanf()在每次迭代中是否成功也不是一个坏主意。它正在读取一个包含双值的二维数组,一次读取一个值 example+columns*i+j在每次迭代中生成一个指向数组右元素的指针 话虽如此,数组被分配为1-D数组,程序将在每次访问数组元素时

,它一次读取一个二维数组中的
double

example+columns*i+j
在每次迭代中生成一个指向数组右元素的指针

话虽如此,数组被分配为1-D数组,程序将在每次访问数组元素时使用计算进行订阅


代码在使用前应检查
文件
(是否为
文件
?)已成功打开。检查
fscanf()
在每次迭代中是否成功也不是一个坏主意。

它正在读取一个包含
双值的二维数组,一次读取一个值

example+columns*i+j
在每次迭代中生成一个指向数组右元素的指针

话虽如此,数组被分配为1-D数组,程序将在每次访问数组元素时使用计算进行订阅


代码在使用前应检查
文件
(是否为
文件
?)已成功打开。检查
fscanf()
在每次迭代中是否成功也不是一个坏主意。

这段代码读取文件中表示为1D数组的2D数组

double *example = new double[rows*columns];
这一行实际上为数组在内存中分配空间。因此,基本上,
example
将引用内存中数组的基址。通过执行类似于
example+4
的操作,您可以访问数组的地址+32字节。实际上,总和适用于数组的类型:这里是8字节(双字节大小)对于每个单元格,so+4表示4*8=32字节

如果要使用int(4字节)数组,+4表示访问地址+16字节,即4*4字节=16字节

用最简单的话来说,通过执行
example+4
您只需进入数组中的第四个单元格,这就像写入
example[3]
,因为每个单元格实际上都包含一个双精度(8字节),通过执行
address+32
您将跳过前3个元素

fscanf(fileEx, "%lf", example+columns*i+j);

知道了这一点,这一行仅仅意味着将当前字符放入单元格
列*i+j
,就像在任何其他语言中一样。

这段代码读取文件中表示为1D数组的2D数组

double *example = new double[rows*columns];
这一行实际上为数组在内存中分配空间。因此,基本上,
example
将引用内存中数组的基址。通过执行类似于
example+4
的操作,您可以访问数组的地址+32字节。实际上,总和适用于数组的类型:这里是8字节(双字节大小)对于每个单元格,so+4表示4*8=32字节

如果要使用int(4字节)数组,+4表示访问地址+16字节,即4*4字节=16字节

用最简单的话来说,通过执行
example+4
您只需进入数组中的第四个单元格,这就像写入
example[3]
,因为每个单元格实际上都包含一个双精度(8字节),通过执行
address+32
您将跳过前3个元素

fscanf(fileEx, "%lf", example+columns*i+j);

知道了这一点,这一行仅仅意味着你将当前字符放入单元格
列*i+j
,就像你在其他语言中所做的那样。

具体来说,哪些行你不懂?如果我是你,我会得到一本关于C的好书。具体来说,哪些行你不懂?如果我是你,我会得到一本关于C的好书。哦我明白了!因为这是我第一次看到指针,我认为Columnsi和rowscolumns是某种指针函数,而不是简单的乘法。非常感谢!…出于某种原因,我似乎无法在这台计算机上选择这个作为正确答案…我回家后会检查它是否正确…再次感谢!哦,我明白了!因为它是我的第一次看到指针时,我以为Columnsi和rowscolumns是某种指针函数,而不是简单的乘法。非常感谢!…出于某种原因,我似乎无法在这台计算机上选择正确答案…我回家后会检查它是否正确…再次感谢!