小编Jas*_*son的帖子

为什么int指针'++'增加4而不是1?

指针的值是变量的地址.为什么int pointerint指针增加1后增加4个字节的值.

在我看来,我认为指针(变量的地址)的值仅在指针递增后增加1个字节.

测试代码:

int a = 1, *ptr;
ptr = &a;
printf("0x%X\n", ptr);
ptr++;
printf("0x%X\n", ptr);
Run Code Online (Sandbox Code Playgroud)

预期产量:

0xBF8D63B8
0xBF8D63B9
Run Code Online (Sandbox Code Playgroud)

实际输出:

0xBF8D63B8
0xBF8D63BC
Run Code Online (Sandbox Code Playgroud)

编辑:

另一个问题 - 如何访问4个字节并int逐个占用?

c c++ pointers

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

对__cdecl和__stdcall调用约定感到困惑

__cdecl 调用约定说:调用者清理栈.

__stdcall 调用约定说:callee清理栈.

所以我尝试测试下面的代码:

#include <...>

char *callee()
{
    char str[] = "abcd";

    return str;
}

int main()
{
    char *str;
    str = callee();
    printf("%s\n", str);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

根据上述两个召集惯例,我认为:

__cdecl由调用者进行堆栈清理,因此printf("%s\n", str)应输出"abcd".

__stdcall被调用者堆栈清理,所以printf("%s\n", str)应该输出凌乱的字符.

但事实上,两个所有输出凌乱的字符.我很迷惑.感谢帮助!

c c++

6
推荐指数
1
解决办法
2504
查看次数

如何比较两个 visio 文件并报告它们之间的差异?

现在有 2 个 visio 文件,一个新的和一个旧的。

新版本中进行了一些更改。

我需要比较这两个文件以找出它们之间的差异。

如何完成?是否有任何工具可以完成这项工作?谢谢你们!

visio ms-office

5
推荐指数
1
解决办法
7285
查看次数

如何使用 Intel Visual Fortran Compiler 在 Visual Studio 2008 中自动完成 Fortran90 代码?

众所周知,Visual Studio 为 C# 代码自动完成和 IntelliSense 提供了很好的支持。

现在我已将 Intel Visual Fortran Compiler 集成到 Visual Studio 2008 中,并希望使 Visual Studio 也提供对 Fortran 90 代码 IntelliSense 的支持!

如何处理?谢谢!

fortran visual-studio

4
推荐指数
1
解决办法
2882
查看次数

如何提高HDF5 I / O(写文件)效率?

我要写很多与时间有关的科学数据,这意味着应该每隔几秒钟将数据写到hdf5文件中。我的hdf5文件结构设计如下:

  1. 创建许多时间组,例如时间1组,时间2组,时间3组等。
  2. 在时间组中,创建了许多数据集,例如DataSetA,DataSetB,DataSetC等。
  3. 将数据写入上方的数据集。

使用的API:HDF5-Fortran

运行该程序,一切正常,但速度慢,如何提高hdf5的写入动作效率?非常感谢你。

fortran hdf5

3
推荐指数
1
解决办法
966
查看次数

如何使用python在文件的第一行之前插入一个新行?

更多细节如下:

1st line

2nd line

3rd line

4th line

...
Run Code Online (Sandbox Code Playgroud)

现在想插入一个zero line之前命名的新行1st line.文件如下所示:

zero line

1st line

2nd line

3rd line

4th line

...
Run Code Online (Sandbox Code Playgroud)

我知道sed命令可以做这项工作,但如何使用python做到这一点?谢谢

python file-io file

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

与C中的sqrt()函数混淆

当我这样做时,它在我的代码中运行良好...

...

for (i = 2; i <= sqrt(500000); i++)

...
Run Code Online (Sandbox Code Playgroud)

但是喜欢

for (i = 2; i < sqrt(500000) + 1; i++)
Run Code Online (Sandbox Code Playgroud)

编译后执行,发生错误说Segmentation fault (core dumped).

for loop body 是:

for (i = 2; i <= sqrt(500000); i++) {
        summation[i * i] += i;
        for (j = i + 1; j <= 500000 / i; j++) {
            summation[i * j] += (i + j);
        }
    }
Run Code Online (Sandbox Code Playgroud)

这两个for循环之间有什么区别吗?谢谢

c linux

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

如何简洁地执行Linux嵌套命令行?

这里嵌套的命令行意味着一个命令的输出是另一个命令的输入.例如下面:

$ CmdA

output1 output2 output3...
Run Code Online (Sandbox Code Playgroud)

现在我想运行CmdB,它使用CmdA的输出作为参数.那么如何简洁地运行CmdB而不是使用

$ CmdB output1 output2 output3...

我现在有一个实际问题:

$ python-config --cflags --ldflags

-I/usr/include/python2.7 -I/usr/include/python2.7 -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -D_GNU_SOURCE -fPIC -fwrapv
-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
Run Code Online (Sandbox Code Playgroud)

如您所见,命令python-config生成了许多项目.如果我编译.cpp源文件,我必须写所有项目,如

gcc test.cpp -I/usr/include/python2.7 -fno-strict-aliasing -02 -g -pipe........-o test,所以我只是想找到一种执行调用者命令的简单方法.

谢谢你的提示!

linux command-line

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

如何在python中从str中删除dict?

单刀直入.

下面的str对象:

s = '{"key1":"value1", "key2":"value2", "key3":"value3"}'

如你所见,dict包含在str中.现在如何从str中逃脱dict?

换句话说,is it possible d = operate(s), d["key1"] = "value1"等等?

python

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

标签 统计

c ×3

c++ ×2

fortran ×2

linux ×2

python ×2

command-line ×1

file ×1

file-io ×1

hdf5 ×1

ms-office ×1

pointers ×1

visio ×1

visual-studio ×1