小编Dom*_*ner的帖子

如果在C中将分配的内存设置为NULL,会发生什么

在分配指针之前和之后将指针设置为NULL之间有区别吗?

例如,两者之间是否有任何区别

char* c = NULL;
Run Code Online (Sandbox Code Playgroud)

char* c = malloc(sizeof(char));
c = NULL;
Run Code Online (Sandbox Code Playgroud)

每个陈述的含义是什么(如果有的话),并且free(c)在每种情况下的召唤有什么不同?

c malloc free null dynamic-memory-allocation

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

如果Atom在列表中,则返回True的LISP函数

我正在尝试编写一个函数(深度查找),它接受一个列表和另一个参数,如果列表中存在该参数,则返回T. 例如,如果我调用(deep-find '(A B (C D)) 'C)它应该返回true,但是如果我调用(deep-find '(A B (C D)) 'F)它应该返回false.这是我到目前为止的代码,但每次都返回nil:

(defun deep-find (L n)
  (cond
   ((null L) nil)
   ((equal n (car L)) t)
   ((deep-find (cdr L) n))))
Run Code Online (Sandbox Code Playgroud)

lisp recursion list common-lisp

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

C++程序将'*'读作'a'

我正在研究一个简短的小计算器程序,它接受命令行参数并执行相关操作.这一切都很好,除了乘法.

当我在命令行中键入"./calc 3*3"时,程序会发出错误,当我"cout"它存储为运算符的char时,它会显示"a".所有其他运营商都运作良好.

你们能弄明白为什么它不接受"*"作为一个字母吗?

这是代码和一些示例输出:

#include <iostream>
#include <cstdlib>
using namespace std;

const int MINIMUM_ARGUMENTS = 4; //must have at least 4 arguments: execution command, a first number, the operator, and a second number;

double Add(double x, double y);
double Subtract(double x, double y);
double Multiply(double x, double y);
double Divide(double x, double y);

int main(int argc, char* argv[])
{
    if (argc < MINIMUM_ARGUMENTS) //"less than" because counting execution command as first argument
    {
        cout << "\nMust have at least …
Run Code Online (Sandbox Code Playgroud)

c++ command-line pointers char command-line-arguments

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