Tag: 指针

分段写入string时出现错误

我正在尝试编写一个就地反转函数,并且几乎完全遵循在线代码,但运行以下程序会引发总线错误。 我是否将错误的parameter passing给reverse()? void reverse(char *str) { char * end = str; char tmp; if (str) { while (*end) { ++end; } –end; while (str < end) { tmp = *str; *str++ = *end; *end– = tmp; } } } int main() { char *s = "sample"; reverse(s); printf("%s\n"); return 1; }

如何在Fortran中别名函数名称

不知道标题是否正确。 build议欢迎。 这是我想要做的。 检查条件,然后决定在循环中使用哪个函数。 例如: if (a < 0) then loop_func = func1 else loop_func = func2 endif 我可以在编写循环时使用loop_func作为指针。 这两个函数都采用完全相同的input,并且是基于a的值来解决问题的不同方法。 这将允许我只有一个代码块,而不是两个几乎相同的块。 这也可以应用于子程序。 任何想法如何实施? 谢谢。

二维数组转换为指针指针

Activity solution[a][b]; … Activity **mother = solution; 我想将二维数组的对象转换为指针指针。 我怎样才能做到这一点; 我在谷歌search它。 但是我发现只有一个维数组的例子。

如何在Go中执行文字* int64?

我有一个*int64字段的结构types。 type SomeType struct { SomeField *int64 } 在我的代码中的某个时刻,我想声明一个字面意思(比如,当我知道所说的值应该是0,或者指向一个0时,你知道我的意思) instance := SomeType{ SomeField: &0, } …除非这不起作用 ./main.go:xx: cannot use &0 (type *int) as type *int64 in field value 所以我试试这个 instance := SomeType{ SomeField: &int64(0), } …但这也行不通 ./main.go:xx: cannot take the address of int64(0) 我如何做到这一点? 我能想出的唯一解决scheme是使用占位符variables var placeholder int64 placeholder = 0 instance := SomeType{ SomeField: […]

在解除引用的指针后进行增量?

试着理解C语言中指针的行为,我对下面的例子代码感到有些惊讶: #include <stdio.h> void add_one_v1(int *our_var_ptr) { *our_var_ptr = *our_var_ptr +1; } void add_one_v2(int *our_var_ptr) { *our_var_ptr++; } int main() { int testvar; testvar = 63; add_one_v1(&(testvar)); /* Try first version of the function */ printf("%d\n", testvar); /* Prints out 64 */ printf("@ %p\n\n", &(testvar)); testvar = 63; add_one_v2(&(testvar)); /* Try first version of the […]

在删除之前是否有任何理由检查NULL指针?

在删除指针之前,我经常会看到遗留代码检查NULL , if (NULL != pSomeObject) { delete pSomeObject; pSomeObject = NULL; } 删除它之前是否有任何理由检查NULL指针? 之后将指针设置为NULL的原因是什么?

在Python中模拟指针

我正在尝试将一种内部语言(ihl)编译为Python。 ihl特性之一就是指针和引用,它们的行为就像你对C或C ++的期望。 比如你可以这样做: a = [1,2]; // a has an array b = &a; // b points to a *b = 2; // derefernce b to store 2 in a print(a); // outputs 2 print(*b); // outputs 2 有没有办法在Python中复制这个function。 我应该指出,我认为我已经混淆了一些人。 我不想在Python中使用指针。 我只是想从那里的Python专家那里得到一个感觉,我应该生成什么样的Python来模拟上面显示的情况 我的Python不是最伟大的,但到目前为止我的探索还没有产生任何有希望的 我应该指出,我们正在寻求从我们的ihl转向更通用的语言,所以如果有人能够推荐另一种更适合的语言,我们并不是真正的与Python绑在一起。

如何使用迭代器?

我试图计算两点之间的距离。 我用C ++存储在vector中的两点:(0,0)和(1,1)。 我应该得到的结果 0 1.4 1.4 0 但是我得到的实际结果是 0 1 -1 0 我认为在向量中使用迭代器的方式有些问题。 我该如何解决这个问题? 我发布了下面的代码。 typedef struct point { float x; float y; } point; float distance(point *p1, point *p2) { return sqrt((p1->x – p2->x)*(p1->x – p2->x) + (p1->y – p2->y)*(p1->y – p2->y)); } int main() { vector <point> po; point p1; p1.x = […]

我怎样才能在Java中使用指针?

我知道Java没有指针,但是我听说可以用指针创buildJava程序,而这可以由less数几个java专家来完成。 这是真的吗?

C指针:指向一个固定大小的数组

这个问题出在那里的C大师: 在C中,可以像下面这样声明一个指针: char (* p)[10]; ..基本上说这个指针指向一个10个字符的数组。 关于声明一个像这样的指针的整洁的事情是,如果您尝试将一个不同大小的数组的指针指定给p,您将会遇到编译时错误。 如果您尝试将简单字符指针的值赋给p,它也会给您一个编译时错误。 我用gcc试过,它似乎与ANSI,C89和C99一起工作。 在我看来像声明这样的指针将是非常有用的 – 特别是,当传递一个指针函数。 通常,人们会这样写这样一个函数的原型: void foo(char * p, int plen); 如果你期待一个特定大小的缓冲区,你可以简单地testingplen的值。 但是,不能保证传递给你的人真的会给你缓冲区中有效的内存位置。 你必须相信调用这个函数的人是正确的。 另一方面: void foo(char (*p)[10]); ..将强制调用者给你一个指定大小的缓冲区。 这看起来非常有用,但是我从来没有在任何代码中看到过像这样的指针。 我的问题是:有什么理由为什么人们不要这样的指针? 我没有看到一些明显的陷阱?