星号在const char * src中的含义是什么?

时间:2018-02-25 02:18:50

标签: c function pointers parameters

我在C中有一个重复给定字符串的小程序。但我无法弄清楚为什么函数参数需要有一个const char * src的星号。

这是我的代码......

char *repeat_str(size_t count, const char *src) {
    int length = strlen(src);
    char* dest = malloc(count * length * sizeof(char));
    for (int i = 0; i < count; i++) {
      strcpy(dest + i * length, src);
    }
    return dest;
}

当我删除星号作为测试时,我收到错误,说星号是预期的,但我不理解为什么会这样解释。

1 个答案:

答案 0 :(得分:0)

看一下指针声明符的正式解释:6.7.6.1 declarators

char *src是一项C约定,其中srcchar pointer。 在下面的程序中,它指向string literal持有4个字符123_和字符串终结符\0。 字符串的长度为4

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

// `repeat_str` accepts variable count of type size_t and const char * pointer

char *repeat_str(size_t count, const char *src) {

    size_t length = strlen(src); // get the length

    char* dest = malloc(count * length * sizeof(char) + 1); // you need 1 more character for the `null` termination of the dest string

    for (size_t i = 0; i < count; i++) {
      strcpy(dest + i * length, src);
    }

    return dest; // return pointer
}

int main() {

  const char *src =  "123_";  // pointer declaration 
  char *p; // pointer declaration

   p = repeat_str(3,src);

   printf(" %s", p);

  return 0;
}

输出:

 123_123_123_