【问题标题】:Define char array pointer with size用大小定义 char 数组指针
【发布时间】:2011-08-16 16:47:50
【问题描述】:

我想要以下两个声明之间的交叉:

char string[6];
char * string;

我需要一个固定大小的指针,而我不想想在这么简单的事情上使用malloc

所有这个 char 数组需要做的就是分配一个值,并通过如下所示的函数检索它。 (但在一个循环中,因此单独声明)这样做的最佳方法是什么?

string = "words";
printf("%s",string);

【问题讨论】:

  • char * 有什么问题? (嗯,除了应该是const char *。)
  • 使用const char * 只是一种好的形式吗?还是有必要?既然设置为“words”,就不能改了,这点我懂,但是为什么要加const呢?

标签: c arrays string pointers definition


【解决方案1】:

既然您现在已经声明不能使用@nightcracker 的解决方案,我认为您需要使用strncpy() 来分配字符串。

char string[6];
/* .... loop code */
strncpy(string, "words", 6);
printf("%s", string);

我猜在真正的程序中你不会使用字符串文字,因此需要strncpy()

【讨论】:

  • 可以,我希望避免它,但它看起来很宏伟。
【解决方案2】:

定义一个常量数组,其大小由初始化器计算:

const char string[] = "words";

如果您只想要一个指向固定大小的小内存的指针,只需像这样使用它:

const int STR_LEN = 10;
char str[STR_LEN];

... loop, etc

strncpy(string, "1234567890", STR_LEN);

... etc

【讨论】:

  • 我忘了说,分配和访问必须在一个循环中执行(因此之前的声明)
【解决方案3】:

为什么不使用这个:

const char * string;
...
string = "words";
printf("%s",string);

(或者你的问题不清楚)

【讨论】:

  • +1:同意。这回答了上述问题。如果不合适,则需要澄清问题。
猜你喜欢
  • 2022-01-02
  • 2021-01-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多