c - 在 C 中声明字符串与整数的二维数组?

标签 c arrays string multidimensional-array character-arrays

为什么当我为字符串声明二维数组时我需要使用'*'

char *month[12][10] = {"January", "February", "March", "April",
"May", "June", "July", "August",
"September", "October", "November",
"December"};

但是当我将其声明为整数时,就没有必要了吗?

int numbers[2][3]={1,2,3,4,5,6};

最佳答案

因为在 C 中,“字符串”由指向其第一个字符的指针来表示处理

或者换句话说——C 语言中没有字符串类型,只有指向字符的指针。 按照惯例许多库将指向字符的指针视为“字符串”的开头,以 0x00 字节终止或接受“字符串”长度作为参数,但没有字符串类型.

when I declare it for integers, there's no need?

因为整数是由它们本身表示的,而不是由它们的第一个字节地址表示的。当您使用“引号表示法中的内容”时,它会有效地为您提供指向其第一个字符的指针,并且指向字符的指针在 C 中被标记为 char *ptr

当你看到:

char *str = "某个字符串";

这意味着变量str获取字符s的地址。并且变量str被声明为指向字符,所以它是char *。这只是某些库的约定,使用字符的第一个字母来处理以其开头的字符串。

关于c - 在 C 中声明字符串与整数的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27328827/

相关文章:

c - 一元 '*' 的无效类型参数(具有 'int')C 中的错误

c - 为什么在我运行C代码时显示 “collect2.exe: error: ld returned 1 exit status”错误

php - 连接 2 个 echo 并用逗号分隔 - 内爆、数组

string - 将字符向量拆分为单个字符? (与粘贴或 stringr::str_c 相反)

C++:按制表符拆分字符串,但包含空格

c - CreateContext 期间的 BAD_CONFIG

c - 当作为参数传递时,更新函数中的指针地址。 [在 C 中传递指针作为引用]

javascript - 数组键号和 "number"意外地被认为是相同的

arrays - 如何在 Swift 中将两个数组合二为一?

string - Delphi字符串内存泄漏?