lostmakou Asked:2021-12-15 17:02:26 +0000 UTC2021-12-15 17:02:26 +0000 UTC 2021-12-15 17:02:26 +0000 UTC char* a 和 char *a 有区别吗?[复制] 772 char* a和之间会有区别char *a吗? int main(void) { char S[max] = "Hello", S1[max] = "Привет"; char *a = S; char* c = S1; } 我刚刚开始理解 C,我想通过指针更好地理解这一点。 c 2 个回答 Voted Best Answer Harry 2021-12-15T17:06:01Z2021-12-15T17:06:01Z 绝对没有。您可以将空间放置在您想要的位置和数量。 请记住,*指的是一个变量,而不是char,所以 char* a, b; 它是一个变量的声明 - 一个char带有名称的指针a和一个变量 - 只是char带有一个名称b。 eanmos 2021-12-15T18:33:55Z2021-12-15T18:33:55Z 该语言的创建者将语法char *a(正是这种星号排列)设想为某种助记符:表达式*a具有类型char: 对于这种组合类型的每个对象,已经有一种方法可以提及底层对象:索引数组、调用函数、在指针上使用间接运算符。类比推理导致名称的声明语法反映了名称通常出现的表达式语法。因此, int i, *pi, **ppi; 声明一个整数,一个整数指针,一个指向整数指针的指针。这些声明的语法反映了在表达式中使用时i,*pi, 和**ppi都产生一个类型的观察。int Dennis Ritchie - C 语言的发展 在声明多个变量时,这个想法更加明显: int* foo, bar, ** baz; 在这种情况下foo,是一个指向的指针int,bar——只是int,baz——是一个指向指向的指针int。当使用不同的样式时,这会更清楚: int *foo, bar, **baz; 因此,最好使用星号位于变量名旁边的样式。当然,除非这与您项目的风格指南相矛盾。
绝对没有。您可以将空间放置在您想要的位置和数量。
请记住,
*指的是一个变量,而不是char,所以它是一个变量的声明 - 一个
char带有名称的指针a和一个变量 - 只是char带有一个名称b。该语言的创建者将语法
char *a(正是这种星号排列)设想为某种助记符:表达式*a具有类型char:在声明多个变量时,这个想法更加明显:
在这种情况下
foo,是一个指向的指针int,bar——只是int,baz——是一个指向指向的指针int。当使用不同的样式时,这会更清楚:因此,最好使用星号位于变量名旁边的样式。当然,除非这与您项目的风格指南相矛盾。