小编d0r*_*ife的帖子

如果不是内存地址,究竟什么是C指针?

在有关C的信誉良好的来源中,在讨论了&运营商之后给出了以下信息:

...有点不幸的是,术语[地址]仍然存在,因为它混淆了那些不知道地址是什么的人,并误导那些做的人:把指针当作地址通常会导致悲伤...... .

我读过的其他材料(来自同等声誉的来源,我会说)总是毫不掩饰地将指针和&操作符称为给出内存地址.我很想继续寻找事情的实际情况,但是当信誉良好的消息来源不同意时,这很难.

现在我有点困惑 - 究竟什么是指针,那么,如果不是内存地址?

PS

作者后来说:......我将继续使用"地址"一词,因为发明一个不同的 [术语] 会更糟.

c pointers memory-address

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

有没有一种简单的方法可以在Python中将datetime对象增加一个月?

所以我试图找到一种方法将datetime对象增加一个月.然而,根据这个问题,似乎并非如此简单.

我希望有类似的东西:

import datetime as dt

now = dt.datetime.now()
later = now + dt.timedelta(months=1)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我也希望能够在下个月(如果可能的话)去同一天(或最接近的替代方案).例如,DateTime对象定在1月1日将递增到2月1日,而设定在2月28日期时间对象将递增到3月31日,而不是3月28日或东西.

需要明确的是,2月28日将(通常)映射到3月31日,因为它是该月的最后一天,因此它应该到下个月的最后一天.否则它将是一个直接链接:增量应该在下一个月的日期与相同的编号日.

在当前版本的Python中有没有一种简单的方法可以做到这一点?

python datetime

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

表达式中的问号运算符

K&R第二版(第71页) - 我一定错过了解释:

sign = (s[i] == '-') ? -1 : 1;
Run Code Online (Sandbox Code Playgroud)

这个上下文是一个将字符串转换为double的函数.这部分特别是在功能跳过空白区域之后.我推断它正在检查正值或负值,并在函数结束时将其保存为-1或+1以进行符号转换...return sign * val /power;

我想这样做不是更好推断......我是特别不确定什么?: 1正在做的事情(或任何地方,对于这个问题).

这看起来像是一个抽象的if陈述.当?检查真理,:else......是这样吗?它仅限于if/else

我是初学者,之前我没有遇到过这种表达式语法,所以我想知道是否有一个特殊的原因它似乎经常被正式的if/else替代 - 也许,可读性?

c operators

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

为什么会发生字节溢出以及它们实现了什么?

什么是字节溢出?

当我从C程序生成的LLVM中间表示转储x86 ASM时,会有大量溢出,通常为4字节大小.我无法弄清楚它们为什么会发生以及它们取得了什么.

他们似乎"切掉"了堆叠的碎片,但是以一种不寻常的方式:

## this fragment comes from a C program right before a malloc() call to a struct.
## there are other spills in different circumstances in this same program, so it
## is not related exclusively to malloc()
...
sub ESP, 84
mov EAX, 60
mov DWORD PTR [ESP + 80], 0
mov DWORD PTR [ESP], 60
mov DWORD PTR [ESP + 60], EAX # 4-byte Spill
call malloc
mov ECX, 60
...
Run Code Online (Sandbox Code Playgroud)

c memory x86 assembly llvm

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

无法使用GDB进入string.h函数

无法进入string.hGDB 7.5.这是一个简单的示例程序:

源代码:

#include <stdio.h>
#include <string.h>

int main() {
    char str1[20];
    strcpy(str1, "STEP INTO ME\n");
    printf(str1);
}
Run Code Online (Sandbox Code Playgroud)

编译: ~$ gcc -g foo.c

调用: ~$ gdb -q ./a.out

GDB:

(gdb) break 5
Breakpoint 1 at 0x8048471: file foo.c, line 6.
(gdb) break strcpy
Function "strcpy" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 2 (strcpy) pending.
(gdb) run 
Starting program: /home/user/a.out 

Breakpoint 1, main () at foo.c:6
6               strcpy(str_a, "Hello, world!\n"); …
Run Code Online (Sandbox Code Playgroud)

c gdb

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

在Python中将日期转换为字符串

我正在使用一个需要日期输入的API来形式'YYYY-MM-DD'- 是的,这是一个字符串.

我正在尝试编写一个迭代程序,它将遍历一些时态数据.间隔总是一个月.

有没有一种很好的方法将Python日期对象转换为给定的格式?我认为将年,月和日视为整数输入并根据需要递增值,但这相当不优雅且需要大量if\elif\...\else编程.

python string date

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

编译器错误:在malloc期间从类型'void*'分配给'struct'时出现不兼容的类型

编辑 - 下选民可以解释一下吗?我有一个明确的问题,有证据支持,以及事先调查的证据.我想明白你为什么要投票给我......?


我用gcc编译时收到此错误:

error: incompatible types when assigning to type ‘struct cell’ from type ‘void *

问题是:

    struct cell* cells = NULL;
    cells = malloc(sizeof(struct cell) * length);
    for (i = 0; i < length; i++) {
            cells[i] = malloc(sizeof(struct cell) * width);
Run Code Online (Sandbox Code Playgroud)

我相信我已经遵循正确的协议,如所描述这里这里.我错过了什么?

c malloc multidimensional-array

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

链接列表和通过*headRef删除节点

我正在解决一些指针/链接列表问题.其中一个问题是删除列表中的所有节点并将头指向NULL.

我的解决方案与给定的答案不同.我是新手,所以我无法弄清楚我的是否以及为什么不起作用.我遇到的主要问题是试图了解结果free(*headRef);是什么,以及之后是否*headRef可以共享一个不同的指针.

我的想法是:因为我compliment指向下一个节点,我可以释放*headRef指向第一个节点(或者更一般地说,在一个恭维指向之前的节点).然后,我可以指出*headRefcompliment,这个过程可以继续.

这是我的代码:

void DeleteList(struct node** headRef){

    struct node* compliment = *headRef;

    while (compliment != NULL){
            compliment = compliment->next;
            free(*headRef);
            *headRef = compliment;
    }
    *headRef = NULL;
}
Run Code Online (Sandbox Code Playgroud)

假设每个节点都带有两个属性:int和->next指针.

c pointers linked-list data-structures

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

我的标准偏差计算可以更有效吗?

我很好奇我的标准偏差方法是否可以更有效。高效是指快速,快速是指从方法调用到方法返回的延迟。

这是代码:

public double stdDev(ArrayList<Double> input) {

    double Nrecip   = ( 1.0 / ( input.size()) );
    double sum      = 0.0;
    double average  = 0.0;

    for (Double input : inputs) {
        average += input;
    } average *= Nrecip;

    for (Double input : inputs) {
        sum += ( (input - average)*(input - average) );
    } sum *= Nrecip;

    return Math.sqrt(sum);

}
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何建议。

java statistics performance java-8

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

Python:如果任意元素在任意列表中,则返回布尔值

Noob想知道如何改进他的代码.

a, b, c = string.split(enteredDate, "/")

m31s = [1, 3, 5, 7, 8, 10, 12]
m30s = [4, 6, 9, 11]

for x in range(len(m31s)):
    x = int(m31s[x])
    if x != int(a) and b != 31:
         print "Invalid date."
for x in range(len(m30s)):
    et cetera...
Run Code Online (Sandbox Code Playgroud)

如果不清楚,我正在测试输入的日期,看它是否有效.这只是该计划的一部分.主要问题是:测试元素是否与列表中的任何元素匹配的最佳方法什么?

我的方法有效...但是,我怀疑有更好的方法来做到这一点.我在标题中说布尔值,因为我想象的是:

if secretCode(m31s, int(a)) == True:
Run Code Online (Sandbox Code Playgroud)

可能是一个白日梦.只是好奇.

感谢任何花时间提供帮助的人.

python boolean element list match

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