指向c中数组的指针不起作用

指向c中数组的指针不起作用,c,pointers,C,Pointers,为什么这不起作用? 根据我的说法,这应该是可行的,因为ptr是指向字符数组的指针。指向数组的指针是而不是数组,您无处放置字符 这就像有一个没有房子的门垫,但这并不意味着你有地方接待你的客人 要使上述功能正常工作,您应该 char (*ptr)[10]; scanf("%s",ptr);//inputing a string 尽管在上述情况下,您并不真正需要指向数组的指针 指向数组的指针只保留数组地址所需的空间,没有空间存储地址以外的任何内容。如果你可怕地绕过了类型转换机制,你可能会用这个空间来

为什么这不起作用?
根据我的说法,这应该是可行的,因为ptr是指向字符数组的指针。

指向数组的指针是而不是数组,您无处放置字符

这就像有一个没有房子的门垫,但这并不意味着你有地方接待你的客人

要使上述功能正常工作,您应该

char (*ptr)[10];
scanf("%s",ptr);//inputing a string
尽管在上述情况下,您并不真正需要指向数组的指针


指向数组的指针只保留数组地址所需的空间,没有空间存储地址以外的任何内容。如果你可怕地绕过了类型转换机制,你可能会用这个空间来存储一些字符,而不是地址,但这违背了我身体的每一条道德纤维,可能也违背了每一条打字规则。

ptr
不是指向
char
的指针,而是指向一个由10个
char
s组成的数组。

+1,很好的解释,但你的意思是
这是指向(请注意,与符号;)数组不需要与符号,因为数组本身是地址。@user3475381,不兼容指针类型的赋值(不带&)@user3475381数组本身是地址,对不对,但指向数组的指针不仅仅是地址,而是指向地址的地址;所以你需要
&
,才能得到数组的地址(address)。啊,第一个地址是指针的地址,它指向第二个地址,即数组。我把地址读成指针。我的错。
char ptr[10]; // This is where you have space, specifically stack space
char (*this_is_a_pointer_to_array)[10]; // This only holds space to keep an address to an array
this_is_a_pointer_to_array = &ptr;
scanf("%s",ptr);