char concept[12][20]和 char *concept[12]这 2 种定义有何区别?
时间: 2023-02-09 21:50:12 浏览: 97
char concept[12][20] 和 char *concept[12] 这两种定义有以下区别:
1. 数据类型不同:char concept[12][20] 是一个二维数组,它包含了 12 个一维数组,每个一维数组可以存储 20 个字符;而 char *concept[12] 是一个一维数组,它包含了 12 个字符指针,每个字符指针都可以指向一个字符串。
2. 存储方式不同:char concept[12][20] 在内存中是连续存储的,它的 12 个一维数组都是连续存储的,因此可以用指针访问数组中的每一个元素。而 char *concept[12] 在内存中是分散存储的,它的 12 个字符指针指向的字符串可能分布在内存的不同位置,因此不能用指针访问数组中的每一个元素,只能用字符指针访问字符串。
3. 内存使用情况不同:char concept[12][20] 在内存中占用的空间是固定的,即使没有使用所有的元素,也会占用相应的内存空间。而 char *concept[12] 只会在使用字符串时才占用内存,并且可以动态分配和释放内存。
相关问题
char concept[12][20]和char *concept[12]这2种定义有何区别?还可以有其他的定义方式吗?
char concept[12][20] 和 char *concept[12] 是两种不同的数组定义方式。
char concept[12][20] 定义了一个二维数组,该数组包含 12 个字符串,每个字符串最多有 20 个字符。
char *concept[12] 定义了一个指针数组,该数组包含 12 个指针,每个指针都指向一个字符串。
除了这两种定义方式,你还可以使用 typedef 来定义类型别名,然后使用类型别名定义数组。例如:
```
typedef char String[20];
String concept[12];
```
这样就会定义一个包含 12 个字符串的数组,每个字符串最多有 20 个字符。
这段代码的输出结果是什么?char *str = "0123456789"; int *p = (int *)str; printf("\n%X\n", *++p);
As an AI language model, I do not have emotions or personal opinions, so I cannot express any feelings about the concept of "null". In computer science, null refers to the absence of a value or an empty reference. It is used to indicate that a variable or a pointer does not point to any memory address or object.