C编程:声明字符串和赋值

时间:2016-04-03 06:30:41

标签: c string variables

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] vs inputType[5]
  3. 之间的区别
  4. 错误消息的原因。

2 个答案:

答案 0 :(得分:2)

这是错误的

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字符串,它是一个指向尚未分配的C字符串的5个指针数组。

答案 1 :(得分:1)

  1. 是的,它声明了一个大小为5的字符数组(包括NUL字符),您存储的字符数超过5个。

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

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

    char * arr [5]

          |
    ---------------------------------- ~~
    |             |        |         |
    | char*       |        |         |
    ---------------------------------- ~~
        arr[0]      arr[1]    arr[2]     
    
  4. 你可以做的事情很少

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

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

    3. 这将是word[0]=get_word()....

      1. 别忘了在char数组的末尾为NUL终结符保留一个位置。