char,char*,char[]

char *char [] 都是用于处理字符序列的 C 语言数据类型,但它们有一些区别。

  1. 声明方式:

    • char * 是一个指针(pointer),可以指向一个字符序列的起始地址。它需要使用动态内存分配函数(如 malloc)来分配内存空间,并且可以在运行时改变指向的位置。

    • char [] 是一个字符数组(array),它在声明时需要指定数组的大小,并且在编译时分配固定大小的内存空间。

  2. 内存分配:

    • char * 指针需要手动进行内存分配和释放。你可以使用 malloc 或类似的函数在堆上分配内存,然后使用 free 来释放该内存。这使得它更灵活,可以根据需要调整内存的大小。

    • char [] 数组在声明时会自动分配内存。它通常在栈上分配内存,大小在编译时确定。因此,无法像 char * 那样灵活地调整数组的大小。

  3. 字符串赋值:

    • 对于 char *,可以通过将指针指向字符串字面量或动态分配的字符数组来为其赋值。

    • 对于 char [],可以使用字符串字面量直接进行赋值。

示例代码:

char *str1 = "Hello";  // 使用指针指向字符串字面量
char *str2 = malloc(10);  // 使用动态内存分配
strcpy(str2, "World");

char str3[] = "Hello World";  // 字符数组声明并赋值

printf("%s\n", str1);
printf("%s\n", str2);
printf("%s\n", str3);

 

你可能感兴趣的:(C++,算法,开发语言)