小编GEN*_*NER的帖子

Matplotlib 中的非线性第二轴

我想知道如果没有任何解析公式,是否有一种方法可以在 Matplotlib 中添加第二个非线性 x 轴。或者简化是否有办法为原始 x 轴中的每个数字创建不同的标签。下图解释了我正在寻找的内容。不幸的是,类似的问题之前已经被问过,但没有得到解答。

在此输入图像描述

python plot matplotlib axis-labels

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

使用 ctypes 调用 argc/argv 函数

我正在为 Python 的 C 代码创建一个包装器。C代码基本上在终端中运行,具有以下主要函数原型:

void main(int argc, char *argv[]){
f=fopen(argv[1],"r");
f2=fopen(argv[2],"r");
Run Code Online (Sandbox Code Playgroud)

所以基本上读取的参数是终端中的字符串。我创建了以下 python ctype 包装器,但看来我使用了错误的类型。我知道从终端传递的参数被读取为字符,但等效的 python 侧包装器给出以下错误:

import ctypes
_test=ctypes.CDLL('test.so')

def ctypes_test(a,b):
  _test.main(ctypes.c_char(a),ctypes.c_char(b))

ctypes_test("323","as21")



TypeError: one character string expected
Run Code Online (Sandbox Code Playgroud)

我尝试添加一个字符,只是为了检查共享对象是否被执行,它与打印命令一样工作,但暂时直到共享对象中的代码部分需要文件名为止。我也尝试过 ctypes.c_char_p但是得到了。

Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
Run Code Online (Sandbox Code Playgroud)

根据评论中的建议更新为以下内容:

def ctypes_test(a,b):
      _test.main(ctypes.c_int(a),ctypes.c_char_p(b))
ctypes_test(2, "323 as21")
Run Code Online (Sandbox Code Playgroud)

但遇到同样的错误。

python ctypes

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

"Const"在C++中做了什么其他的事情,然后告诉编译器特定的东西是只读的

好吧,我没有意识到这const可能像指针一样令人困惑.有人可以在步骤中解释下面的代码到底做了什么const

const int*const Method3(const int*const&)const;
Run Code Online (Sandbox Code Playgroud)

即使对于非新手程序员来说也是如此令人困惑.

c++ pointers const

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

C++ 中的句柄、空指针、对象

因此,我正在阅读有关C 语言句柄的文章,并意识到我们将句柄实现为 void 指针,因此我们获得的“任何”对象/数据类型都可以将 void 指针转换为该类型的对象/数据并获取其值。所以我基本上有两个担忧:

1.如果让我们说下面的例子取自C中的Handle

 typedef void* HANDLE;   
 int doSomething(HANDLE s, int a, int b) {
         Something* something = reinterpret_cast<Something*>(s);
         return something->doit(a, b);
     }
       
Run Code Online (Sandbox Code Playgroud)

如果我们将值传递给函数dosomething(21,2,2),这是否意味着 HANDLE 指向的值是 21,如果是的话,当我们键入时,任何对象如何将其转换为该对象,它是否能够使用它,就像在这个例子中一样,所以在换句话说,指向对象 Something 的指针something将在哪里存储值 21。

2.其次,该链接还显示“因此,在您的代码中,您只需将 HANDLE 作为不透明值传递”,这实际上是什么意思?为什么我们要“传递句柄”?如果有人能给出更有说服力的使用对象的句柄示例,那就太好了!

c++ handle void-pointers

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

“如果自我中的x:”是什么意思?

因此,我在Python中具有以下代码段的成员方法:

def foo(self, param):
    x = self._as_array(param)
    if x in self:
        raise KeyError('Data point {} is not unique'.format(x))
Run Code Online (Sandbox Code Playgroud)

if x in self:是什么意思?它没有引用任何成员方法。例如,if x in self._some_array这是有道理的,但仅说self没有任何参考就意味着什么?

python class contains

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

C ++中令人困惑的尖括号&lt;something&gt;

我来自c到c ++,并且熟悉语法。但是我只是用不熟悉的语法遇到了代码

int main() {
    std::shared_ptr < CommonAPI::Runtime > runtime = CommonAPI::Runtime::get();
    std::shared_ptr<HelloWorldProxy<>> myProxy =
        runtime->buildProxy<HelloWorldProxy>("local", "test");
Run Code Online (Sandbox Code Playgroud)

有人可以解释语法的something < something > something作用还是语法的something<something<>> something作用。

c++ brackets

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

用 C 语言编写类似 Python 的指针

我正在从 Python 过渡到 C,所以我的问题可能看起来很幼稚。我正在阅读有关 Python-C 绑定的教程,并提到:

在 C 中,所有参数都是按值传递的。如果要允许函数更改调用方中的变量,则需要传递指向该变量的指针。

问题:为什么我们不能简单地重新分配函数内部的值并且摆脱指针?

以下代码使用指针:

#include <stdio.h>
int i = 24;

int increment(int *j){
    (*j)++;
    return *j;
}
void main() {
    increment(&i);
    printf("i = %d", i);
}
Run Code Online (Sandbox Code Playgroud)

现在这可以用以下不使用指针的代码替换:

int i = 24;

int increment(int j){
    j++;
    return j;
}
void main() {
    i=increment(i);
    printf("i = %d", i);
}
Run Code Online (Sandbox Code Playgroud)

c python pointers

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