小编Ser*_*kov的帖子

在Matlab中使用句柄0的对象

Matlab有一个叫做的函数setappdata.从本书(关于缓存的章节)我已经了解到缓存数据可以使用setappdata神秘对象0 存储,如下所示:

setappdata(0,'CachedData',[0 1 2 3]) % I am caching vector [0 1 2 3]
Run Code Online (Sandbox Code Playgroud)

问题是,对象0是什么?

matlab

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

C中的malloc vs数组

我正在哈佛大学攻读 MOOC课程CS50.我的最后一个讲座是关于内存分配和指针(两个对我来说绝对新的概念).

所教的是malloc(10*sizeof(char))在堆上分配足够的字节来存储10个字符并返回指向第一个字节的指针,该指针可以保存在另一个变量中,如下所示char *x = malloc(10*sizeof(char)).为了释放内存,人们会使用free(x).

但还有另一种方法可以让计算机保留足够的内存来存储10个字符,即char c[10].

  1. 在上面的代码片段中c也是一个类型的指针char*
  2. 是否char c[10]还保留内存堆中malloc呢?
  3. 分配内存的方法是否相同?
  4. char c[3] = "aaa";free(c);返回运行时错误; 所以我似乎无法释放我分配的内存char c[3].这是为什么?

我真的很感激为那些刚学过指针的人量身定做的答案.

c memory cs50

4
推荐指数
3
解决办法
1566
查看次数

C 中 == 的确切含义

==对 C中运算符的确切含义有点困惑。

它是比较变量代表的数学值(取决于它们的类型)还是变量背后的位模式?具体来说:

int x = 0x80000000;
unsigned y = x;
x==y // true
Run Code Online (Sandbox Code Playgroud)

因此,尽管 x 是一个很大的负值而 y 是一个很大的正值,但它们是相等的(我猜是因为它们具有相同的位模式)。

int64_t x = 0x8000000000000000;
int y = x;
x==y // false
Run Code Online (Sandbox Code Playgroud)

这里 x 和 y 中的第一个(最低有效)32 位是否相同并不重要。因此,在这种情况下,C 看起来像是在查看变量表示的值。

官方规则是什么,是否有权威参考(在 K&R 中没有发现任何有用的信息)?

gcc在上面的例子中使用了编译器。

c operators

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

C替代malloc

在阅读K&R(第6.5节,第二版)时,我遇到了以下功能:

struct tnode *talloc(void)
{
    return (struct tnode *) malloc( sizeof(struct tnode) );
}
Run Code Online (Sandbox Code Playgroud)

该函数分配一些空格来存储struct tnode.我只是想通过询问我是否会达到以下目的来检查我的理解:

struct tnode *talloc(void)
{
    struct tnode s;
    return &s;
}
Run Code Online (Sandbox Code Playgroud)

c malloc struct pointers

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

标签 统计

c ×3

cs50 ×1

malloc ×1

matlab ×1

memory ×1

operators ×1

pointers ×1

struct ×1