小编Nob*_*lis的帖子

C - 指针和不同的结果?

我无法弄清楚这一点.也许是因为凌晨2点.无论如何,我在这里不知所措.

#include <stdio.h>

int main()
{
    char array[] = "123456789";
    char* ptr = array;

    printf("%c\n", *(ptr++));
    printf("%c\n", *ptr);

    *ptr = array[3];
    printf("%c\n", *(ptr++));
    printf("%c\n\n", *ptr);

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

结果是:

1
2
4
3
Run Code Online (Sandbox Code Playgroud)
  1. 我有一个指针,我指定array.

  2. 然后我打印,我认为将是第一个索引('2'),而是得到1.- 所以,我假设它*(ptr++)实际上是取消引用,然后才增加指针.

  3. 然后我重新分配ptr第四个索引('4')并重复步骤2.这样就可以正常工作,因为我看到C在解除引用之前不会先计算括号.

  4. 然后我打印新增加ptr的显示('5')...我得到了3

那是怎么回事,第1步和第2步以及第3步和第4步是相同的,但是我得到了不同的结果?

c pointers

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

处理完信号后,C程序能否继续执行?

我是Unix中通过C进行信号处理的新手,我一直在寻找一些关于它的教程(出于纯粹的兴趣).

我的问题是,是否有可能在处理信号之后继续执行程序?

我知道信号处理功能可以进行清理,但是在异常处理的精神下(例如在C++中),是否可以以相同的方式处理该信号并使程序继续正常运行?

目前catch进入一个无限循环(可能是一种退出的方式是打电话exit(1)).

我的意图b是分配1并使程序优雅地完成(如果可能的话).

这是我的代码:

#include <signal.h>
#include <stdio.h>

int a = 5;
int b = 0;

void catch(int sig)
{
    printf("Caught the signal, will handle it now\n");
    b = 1;
}

int main(void)
{
    signal(SIGFPE, catch);

    int c = a / b;

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

另外,由于C是程序性的,为什么在执行后者之后实际调用了有问题的语句之前声明的信号处理程序?

最后,为了使处理函数能够正确地进行清理,所有在异常情况下需要清理的变量都需要在函数之前声明,对吧?

如果上面的一些内容非常明显,请提前感谢您的回答和道歉.

c signals

12
推荐指数
3
解决办法
9375
查看次数

自动化GDB在特定断点处打印堆栈帧

是否可以将gdb附加到正在运行的进程的PID上,并且每次程序命中特定断点时gdb都会将堆栈输出到外部文件?

我看了一眼这个这个,但没有就是否有可能GDB附加到一个已经运行的进程没有提及(而不是让GDB启动它).

我可以将gdb附加到PID就好了,但是我想自动运行它bt,将输出存储在外部文件中然后运行continue.目前我正在手动执行此操作,每次遇到断点时我都必须这样做.

c gdb

8
推荐指数
2
解决办法
3203
查看次数

访问冲突错误C.

我是初学者,我正在学习C和C++.我试图在Visual Studio 2012 Express for Windows桌面中运行此代码.这是一个简单的计算器代码,我自己写的!但每当我运行它时,我都会收到此错误Unhandled exception at 0x519600B4 (msvcr110d.dll) in Calculator.exe: 0xC0000005: Access violation writing location 0x00000000.

请原谅我的任何错误(这是我的第一次).谢谢!

#include<stdio.h>
#include<conio.h>

main ()
{
    int num1, num2, result;
    char oper;
    scanf_s("%d%c%d", &num1, &oper, &num2);
    switch(oper)
    {
    case '+':
        result = num1 + num2;
        printf("%d", result);
        break;
    case '-':
        result = num1 - num2;
        printf("%d", result);
        break;
    case '*':
        result = num1 * num2;
        printf("%d", result);
        break;
    case '/':
        result = num1 / num2;
        printf("%d", result);
        break;
    default:
        printf("ERROR: INVALID …
Run Code Online (Sandbox Code Playgroud)

c

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

sqlAlchemy无法识别在会话之外对DB进行的更改

我注意到的一些特殊情况是,在会话之外提交给DB的任何更改(例如在MySQL的Workbench中创建的更改)都无法在sqlAlchemy会话中识别.我必须关闭并打开sqlAlchemy的新会话来识别它.

例如,仍然从sqlAlchemy获取我手动删除的行.

这是我初始化会话的方式:

engine   = create_engine('mysql://{}:{}@{}/{}'.format(username, password, host, schema), pool_recycle=3600)
Session  = sessionmaker(bind=engine)
session  = Session()
metadata = MetaData()
Run Code Online (Sandbox Code Playgroud)

如何让sqlAlchemy识别它们?

我的sqlAlchemy版本是0.9.4,我的MySQL版本是5.5.34.我们只使用sqlAlchemy的Core(没有ORM).

python mysql sqlalchemy

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

使用"sum"在Octave中实现多个变量的梯度下降

我正在做Andrew Ng关于机器学习的课程,我正试图围绕多个变量的渐变下降的矢量化实现,这是课程中的一个可选练习.

这是有问题的算法(取自此处):

在此输入图像描述

sum虽然我不能用八度音阶来做这个,但我不确定如何将x(i)-y(i)的假设之和乘以所有变量xj(i).我尝试了以下代码的不同迭代,但无济于事(维度不正确或答案错误):

theta = theta - alpha/m * sum(X * theta - y) * X;
Run Code Online (Sandbox Code Playgroud)

然而,正确的答案是完全不明显的(对于像我这样的线性代数初学者,从这里开始):

theta = theta - (alpha/m *  (X * theta-y)' * X)';
Run Code Online (Sandbox Code Playgroud)

对于sum涉及如上所述的变换的案件,是否有经验法则?

如果是这样,是否存在上述相反的版本(即从sum基于解决方案到一般乘法解决方案),因为我能够sum为单个变量提供一个正确的梯度下降实现(尽管不是很优雅)一):

temp0 = theta(1) - (alpha/m * sum(X * theta - y));
temp1 = theta(2) - (alpha/m * sum((X * theta - y)' * X(:, 2)));

theta(1) = temp0;
theta(2) = temp1;
Run Code Online (Sandbox Code Playgroud)

请注意,这只涉及矢量化实现,虽然有关SO如何完成的几个问题,但我的问题主要是关于Octave中算法的实现sum.

machine-learning octave gradient-descent

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

Ubuntu 14.04上的Vim使用了一个有趣的python路径,python无法在其他模块中导入_io

突然(可能是在更新软件包之后)vim停止使用YouCompleteMe并抛出:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/io.py", line 51, in <module>
    import _io
ImportError: No module named _io
Run Code Online (Sandbox Code Playgroud)

(当我尝试从vim内部导入io时也会发生这种情况:python import io).

我在过去几个小时里一直在争夺这个问题,不知道问题是什么,重新安装了python和vim几次,无论是来源还是来自aptitude都没有区别.我注意到,与命令行相比,vim中的python使用了一个有趣的路径:

~$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys; print sys.path
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
>>> 
Run Code Online (Sandbox Code Playgroud)

从vim:

:python import sys; print sys.path
['/usr/lib/python27.zip', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', …
Run Code Online (Sandbox Code Playgroud)

python linux vim

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

如何配置Racket解释器以支持命令历史记录?

我刚刚设置了Racket并且一直在尝试翻译.

但是,我似乎无法使用箭头(或Ctrlp/ Ctrln为此)上下命令历史记录或 用于Ctrlr搜索它.

这甚至支持?我可以使用该功能构建它吗?

来自Python背景我非常习惯这些功能,并希望将它们也用于Racket.

readline input-history racket

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

在Django admin中显示ManyToMany关系的两面

假设我有以下具有多对多关系的模型:

models.py:

class Foo(models.Model):

    name = models.TextField()


class Bar(models.Model):

    name = models.TextField()
    foos = models.ManyToManyField(Foo, related_name='bars')
Run Code Online (Sandbox Code Playgroud)

然后以以下方式在admin中定义它们:

管理员

@admin.register(Foo)
class FooAdmin(admin.ModelAdmin):
    """Foo admin."""

    list_display = ('name',)
    search_fields = ('name',)


@admin.register(Bar)
class BarAdmin(admin.ModelAdmin):
    """Bar admin."""

    list_display = ('name',)
    search_fields = ('name',)
Run Code Online (Sandbox Code Playgroud)

在Django admin中,浏览Bar实例时,我可以看到Foo实例Bar与之关联,并可以从那里修改它们。

但是,没有这样的运气Foo,我看不到Bar每个Foo对象都与之关联的实例。

Django可以为此定义自动处理吗,还是我需要滚动自己的方法?

我正在使用Python 3.6.1和Django 1.11。

python django django-models django-admin

3
推荐指数
2
解决办法
1767
查看次数

使用python将单词移至行尾

我正在解析HTML,并且得到了一个Array字符串,我试图将其清理并稍后放入pdf中。在此级别上,我想将所有单词从头开始移动@X到行尾,以便最终使所有行@X对齐。

Hello World @Xabs
Hello World                                   @Xz
Hello World  @Xss
Hello World         @Xssa
Hello World       @Xqq
Hello World             @Xsasas
Run Code Online (Sandbox Code Playgroud)

我想作为输出:

Hello World                                        @Xabs
Hello World                                        @Xz
Hello World                                        @Xss
Hello World                                        @Xssa
Hello World                                        @Xqq
Hello World                                        @Xsaxs
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

到目前为止,我有:

Hello World @Xabs
Hello World                                   @Xz
Hello World  @Xss
Hello World         @Xssa
Hello World       @Xqq
Hello World             @Xsasas
Run Code Online (Sandbox Code Playgroud)

python string

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