相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

如何在内存中分配C字符串?

假设我有一个以这种方式返回C字符串的简单函数:

const char * getString()
{
  const char * ptr = "blah blah";
  return ptr; 
}
Run Code Online (Sandbox Code Playgroud)

我以这种方式从main()调用getString():

  const char * s = getString();
Run Code Online (Sandbox Code Playgroud)

1)根据gdb,变量ptr存储在堆栈中,但ptr指向的字符串不是:

(gdb) p &ptr
$1 = (const char **) 0x7fffffffe688

(gdb) p ptr
$2 = 0x4009fc "blah blah"
Run Code Online (Sandbox Code Playgroud)

这是否意味着"blah blah"不是getString()中的局部变量?

我想如果它是一个局部变量,我将无法将它传递给我的main()函数......但如果它不存在,它存储在哪里?在堆上?这是OS每次点击字符串时实现的"一种"动态内存分配,还是什么?

2)如果我使用数组而不是指针,这样:

const char *getString2()
{
  const char a[] = "blah blah blah";
  return a;
}
Run Code Online (Sandbox Code Playgroud)

编译器警告我:

warning: address of local variable ‘a’ returned

(当然程序编译,但它不起作用).

实际上,如果我问gdb,我会的

(gdb) p &a
$2 = (const char …
Run Code Online (Sandbox Code Playgroud)

c

12
推荐指数
2
解决办法
802
查看次数

在C语言中将字符串分配给指针

我是C语言的新学习者,我的问题是指针.到目前为止,我学习和搜索指针只能存储其他变量的地址,但不能存储实际值(如整数或字符).但是在下面的代码中,char指针c实际存储了一个字符串.它执行时没有错误,并将输出作为"名称".

#include <stdio.h>
main()
{
    char *c;
    c="name";
    puts(c);
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一个指针如何存储没有任何内存的字符串,或者是否创建了创建它的内存以及可以创建多少大小的内存.

我尝试使用整数类型指针

#include <stdio.h>
main()
{
    int *c;
    c=10;
    printf("%d",c);
}
Run Code Online (Sandbox Code Playgroud)

但它给出了一个错误

cc     test.c   -o test
test.c: In function ‘main’:
test.c:5:3: warning: assignment makes pointer from integer without a cast   [enabled by default]
c=10;
^
test.c:6:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d",c);
^
Run Code Online (Sandbox Code Playgroud)

指针存储变量的地址然后为什么整数指针与字符指针不同.

如果有什么我缺少关于指针plz解释.

c string pointers

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

标签 统计

c ×3

casting ×1

malloc ×1

pointers ×1

string ×1