【问题标题】:C Programming: declaring string and assignmentC 编程:声明字符串和赋值
【发布时间】:2016-04-03 06:30:40
【问题描述】:
int main(){
   char inputType[5] = "hello you"; //a string 
   char *word[5]; //a string that will contain 4 character + the null
   word = get_word(inputType);
   return 0;
}
char *get_word(char inputType[]){ //inputType is a string
    char *array[2]; //an array that will store ["hello", "you"]
    // got correct code to make it ["hello", "you"]
    return array[1] //want to return "you"
}

我收到此错误消息:

Error: word = get_word (inputType) assingment to expression with array Type------------------------------ 

问题:

  1. char inputType[5] 是否声明了一个字符串?
  2. char *word[5]inputType[5] 之间的区别
  3. 错误消息的原因。

【问题讨论】:

  • 什么是get_word()
  • 同样在char inputType[5] = "hello you";,您在这里分配了超过 5 个字符。
  • get_word 是函数
  • 好的,因为首先你写了*word()感谢编辑
  • get_word() 返回一个字符,而 word 是一个字符串。所以你可以运行:word = get_word(inputType);,因为类型不兼容。

标签: c string variables


【解决方案1】:

这是错误的

char inputType[5] = "hello you"; 

hello you 有 9 个字符长,您还需要空终止符,所以您需要...

char inputType[10] = "hello you";

这是错误的,因为评论错误

char *word[5]; //a string that will contain 4 character + the null

char *word[5] 不是 C 字符串,它是一个由 5 个指向尚未分配的 C 字符串的指针组成的数组。

【讨论】:

  • 所以 char*word[5] 是否表示为 [pointer1 指向 char,指针 2 指向 char,指针 3 指向 char,指针 4 指向 char,指针 5 指向 char]?
  • 当您使用 type_t id[100]; 时,您要求 100 项 type_t 并且它们在堆栈上声明。这,char *word[5]; 声明了 5 个项目,即 5 个指向字符串的指针,请注意,要清楚有效的 C 字符串必须有一个 Null 终止符。
【解决方案2】:
  1. 是的,它声明了一个大小为 5 的 char 数组(包括 NUL 字符),您在其中存储了 5 个以上的字符。

  2. 第一个是char* 的数组,第二个是chars 的数组。

  3. 是的 char*word[5] 不是你想的那样。除非你分配内存,否则它只能保存存储字符的内存位置的地址。

    char* arr[5]

          |
    ---------------------------------- ~~
    |             |        |         |
    | char*       |        |         |
    ---------------------------------- ~~
        arr[0]      arr[1]    arr[2]     
    

你可以做的几件事

  1. 您基本上是在初始化 char 数组。所以这样做 char inputType[]= "Hello You";

  2. 错误信息基本上是由于这一行而显示的 word = get_word(inputType); 那么你在做什么?您将 char* 分配给一个数组变量,该变量应该包含 char*-s

那就是word[0]=get_word()....

  1. 不要忘记在 char 数组的末尾保留一个用于 NUL 终止符的位置。

【讨论】:

  • 我可以通过 (1)char word[5] = word(inputType)...我的函数 char *word 返回一个字符串吗?
  • 指向字符串的指针。现在您可以复制它或做任何事情(请记住,如果您返回指向动态分配的内存或静态变量的指针,这是可能的)。
  • @amay20.:希望这会有所帮助...检查我的答案。
猜你喜欢
  • 2020-02-11
  • 2010-10-19
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2022-11-14
相关资源
最近更新 更多