小编tgu*_*926的帖子

为什么堆栈上的char []而堆上的char*?

我对发生的事情感到非常困惑.我一直以为char *并且char []可以互换,但是在查看内存地址后,它似乎char *在堆中分配空间,而char []在堆栈上分配内存.

char stack[] = "hello";
char *heap = "hello";

char *heap_string_malloc = malloc(5);
heap_string_malloc = "hello";

printf("Address of stack[0]: %p\n", stack);
printf("Address of heap[0]: %p\n", heap);
printf("Address of heap_string_malloc[0]: %p\n", heap_string_malloc);
Run Code Online (Sandbox Code Playgroud)

输出以下内容:

Address of stack[0]: 0x7fff8b0b85b0
Address of heap[0]: 0x400760
Address of heap_string_malloc[0]: 0x400760
Run Code Online (Sandbox Code Playgroud)

这是否意味着char *动态分配?

令我困惑的是,为什么malloc分配与已分配的内存地址相同的内存地址char *heap?我没有运行任何优化(简单gcc file.c).

c memory pointers

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

如何使用lwIP堆栈发送简单的HTTP请求?

如果问题不相关,请移动/关闭此项.

核心:Cortex-M4

微处理器:TI TM4C1294NCPDT.

IP堆栈:lwIP 1.4.1

我正在使用这个微处理器进行一些数据记录,我想通过以下形式通过HTTP请求将一些信息发送到单独的Web服务器:

http://123.456.789.012:8800/process.php?data1=foo&data2=bar&time=1234568789

我希望处理器能够看到响应头(即,如果它是200 OK或出现问题) - 它不必显示/接收实际内容.

lwIP有一个用于微处理器的http服务器,但我正好相反(微处理器是客户端).

我不确定数据包如何与请求/响应头相关联,所以我不确定我是如何实际发送/接收信息的.

embedded ip http packet lwip

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

Laravel集合将数组转换为对象

如果我运行$collection->filter(myFilter),Laravel会为集合中的每个模型添加密钥这样烦人的事情,如下所示:

{
    "4": {
        "myObject": "data"
    },
    "7": {
        "myObject": "data"
    }
}
Run Code Online (Sandbox Code Playgroud)

如何摆脱"4"和"7",这是我的对象数组?

我运行的代码是:

$obj = Cars::with('brand')->orderBy('id')->get();

return $obj->filter(function($value, $key)
{
    return $value->display == true;
});
Run Code Online (Sandbox Code Playgroud)

php json laravel laravel-collection

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

'git pull'设置664而不是644权限

线程,本人已阅读,混帐应该设置644 通过设计,这是我想要的.但是,无论何时git pull我的存储库,它都会将权限更改为664.

我的本地磁盘的权限设置为644(我想要的).如果我通过FTP和Filezilla上传,这些权限将保留在服务器上.

为什么我的权限会发生变化,有没有办法在不手动更改权限的情况下修复它?

git file-permissions

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

在没有创建对象的情况下从指针中查找结构的正确大小?

对不起,如果标题令人困惑.这是我的结构:

struct l_list{
   int number;
   char *name;
   double value;
   struct l_list *next;
};

typedef struct l_list *PhoneBook;
Run Code Online (Sandbox Code Playgroud)

主功能:

int main(void){

   printf("%u\n", sizeof(struct l_list));

   PhoneBook person1;

   printf("%u\n", sizeof(*person1));
   printf("%u\n", sizeof(PhoneBook));

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

输出是:

20
20
4

据我所知,PhoneBook它显示的是4个字节,因为它只是指针的大小,但是如何从?找到实际结构的大小typedef PhoneBook

c struct pointers sizeof

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

include()函数的三元运算符错误

include ( $_GET['p'] == 'home') ? 'pages/home.php' : NULL;
Run Code Online (Sandbox Code Playgroud)

给出错误:

注意:未定义的索引:第38行的/var/www/index.php中的p
警告:require():第38行的/var/www/index.php中的文件名不能为空
致命错误:require():需要打开失败第38行/var/www/index.php中的''(include_path ='.:/ usr/share/php:/ usr/share/pear')

我理解未定义的索引,但为什么我得到其他错误?这一行:

include ( !isset($_GET['p'])) ? 'pages/home.php': NULL;
Run Code Online (Sandbox Code Playgroud)

工作良好.请注意,第一个代码在if语句中可以正常工作(除了未定义的索引,我理解)

php ternary-operator

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

为什么我不能通过传入指针来创建整数?

看起来很琐碎,但我无法理解为什么这不起作用.

int main(void){
    int *k = NULL;
    foo(k);
    printf("%p\n", k);
    printf("%d\n", *k);
    return 0;
}

void foo(int *i){
    i = malloc(sizeof(int));
    if (i == NULL){
        printf("memory fail\n");
    }else {
        *i = 10;
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

(nil)
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud)

我猜它是因为我传入的是NULL,而不是地址k,但不确定如何传递kin 的地址.

c pointers

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

如何在matlab中找到主峰(fft)

我无法在此图中找到4个主要峰值

图形

信号值非常紧张,因为它们上升然后下降,使得很难找到最大值和它的索引.

function [peaks, locations] = findMaxs (mag, threshold)
len = length(mag);

prev = 1;
cur = 2;
next = 3;
k = 1; %number of peaks
while next < len
    if mag(cur) - mag(prev) > threshold
        if mag(cur) > mag(next)
            peaks(k) = mag(cur);
            fprintf('peak at %d\n', cur);
            k = k + 1;
        end
    end
    prev = cur;
    cur = next;
    next = next + 1;
end

end
Run Code Online (Sandbox Code Playgroud)

findpeaks()给了我太多结果,所以我正在使用这个功能.但是,如果我将阈值设置得太低,我会得到太多结果,如果我将它设置得太高,我会错过其中一个主要峰值.

我怎样才能做到这一点?

matlab signal-processing fft

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

在perl中通过哈希内部的引用数组传递

我想修改一个位于perl中哈希内部的数组.但是,我似乎无法在这里通过引用.如果数组不在哈希中,它可以正常工作.这是我的代码:

%hash = (
    array1 => ['foo', 2, 'bar']

);
print @{$hash{array1}}, "\n";
changeArray($hash{array1});
print @{$hash{array1}}, "\n";


sub changeArray
{
    @array = @{$_[0]};
    $array[0] = "not foo";
}
Run Code Online (Sandbox Code Playgroud)

输出:

$ ./scrap.pl
foo2bar
foo2bar
Run Code Online (Sandbox Code Playgroud)

是不是$hash{array1}对匿名数组['foo',2,'bar']的引用?

arrays perl hash pass-by-reference

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

Redux - 条件调度

经典问题 - 我想在提交之前验证表单.

我的提交按钮触发一个动作(简单的调度或thunk).如果表单有效,请提交 - 否则,触发错误消息.

简单的解决方案:调度一个动作,例如VALIDATE_AND_SUBMIT,它在reducer中将验证表单,并提交或设置错误状态.

我觉得这些是两种不同的行为:有效

{
   type: "VALIDATE",
   formData
}
Run Code Online (Sandbox Code Playgroud)

这应验证并设置错误.

{
   type: "SUBMIT",
   // get form data and errors from state
}
Run Code Online (Sandbox Code Playgroud)

提交 - 如果没有错误状态,则应提交.

即使我使用redux-thunk,我也无法从第一个VALIDATE操作获得反馈.我的思维过程是反模式吗?如何在提交表单之前进行验证?

redux redux-thunk react-redux

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

向十六进制数添加一个字节

我似乎把自己弄糊涂了,以至于这不再有意义了。

1 字节 = 8 位。

所以如果我有一个内存位置,比如

0xdeadbeef
3735928559 (base10)
1101 1110 1010 1101 1011 1110 1110 1111
Run Code Online (Sandbox Code Playgroud)

现在,如果我加一个字节0xdeadbeef,什么是二进制序列我添加?是1000吗?如果我加 1 位,我得到0xdeadbee0,如果我加 1 位 8 次,我得到0xdeadbef7. 哪个是正确的?

我记得在微处理器中,计数器在 PC += 4 中递增,这给出了0xdeadbef3,所以我不确定哪个是正确的答案。

c binary hex boolean

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

在Eloquent中检索嵌套关系?

我有三个型号:

  1. 涂料
  2. 汽车
  3. 使

涂料:

{
    "id" : 1,
    "stuff" : "...",
    "car_id" : "4"
}
Run Code Online (Sandbox Code Playgroud)

汽车:

{
    "id" : 4,
    "other_stuff" : "...",
    "make_id" : "7",
}
Run Code Online (Sandbox Code Playgroud)

使:

{
    "id" : 7,
    "make_name" : "Toyota"
}
Run Code Online (Sandbox Code Playgroud)

当我希望能够获得以下结果而无需手动调用Make模型时:

// single Eloquent query to return: 
    {
        "id" : 1,
        "stuff" : "...",
        "car_id" : "4",
        "car" :     {
            "id" : 4,
            "other_stuff" : "...",
            "make_id" : "7",
            "make" :     {
                "id" : 7,
                "make_name" : "Toyota"
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

单嵌套很好,因为你可以使用Paint :: …

php laravel eloquent

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

将void*转换为一个指针结构?

我有一个链表,每个节点都有以下形式:

struct queueItem
{
    struct carcolor *color;
    int id;
};
typedef struct queueItem *CustDetails;
Run Code Online (Sandbox Code Playgroud)

我想运行以下功能:

extern void mix(struct carcolor *v);
Run Code Online (Sandbox Code Playgroud)

但是,该函数在此内部运行:

void foo(void *v)    //v should be the pointer to the dequeued queueItem
{
    //do other stuff
    mix(v->color);
}
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

request for member ‘color’ in something not a structure or union
Run Code Online (Sandbox Code Playgroud)

如何struct carcolor *color在函数原型时访问void foo(void *v)

我试过铸造,(struct queueItem) v但那没用.

c struct pointers casting

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