打印循环变量会更改var值

时间:2018-05-23 14:43:28

标签: c pointers gcc mingw

以下是我的两个结构:

for (int i = 0; i < dimensions[0]; i++)
    {
        sortedData[i] = (data + i * 512);
    }

data var包含文件中的整数。 sortedData应该是2D版本的数据。以下是我初始化它的方法:

    printf("%d\n", data[0]);
    printf("%d\n", sortedData[0][0]);`

测试我使用的值:

81
44766304

问题是第二个printf的结果是一个地址,所以值是:

for (int i = 0; i < dimensions[0]; i++)
    {
        printf("%d\n", data + i * 512);
        sortedData[i] = (data + i * 512);
    }

我试图像这样打印(data + i * 512)的值:

81
81

事情就是这样:printf为每个i返回一个地址,但是现在,程序的结果正是我要找的:

... = malloc(sizeof(int) * 512);

我无法理解printf如何更改返回值以及为什么我的初始解决方案是错误的。

编辑1:从

更改sortedData后仍然无效
... = malloc(sizeof(int *) * 512);

                PrintObjectTransformedInputStream txtInStream = spooledFile.getTransformedInputStream(plist);
                txtInStream = spooledFile.getTransformedInputStream(plist);

                spooledFile.getStringAttribute(PrintObject.ATTR_CODEPAGE);

                if(txtInStream != null) {
                    byte[] buffer = new byte[64 * 1024];
                    fileoutputstream = new FileOutputStream(fileName);

                    int bytesRead = 0;

                    while ((bytesRead = txtInStream.read(buffer)) != -1) {

                        fileoutputstream.write(buffer, 0, bytesRead);
                    }

                    fileoutputstream.close();
                    txtInStream.close();
                }

0 个答案:

没有答案