指向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);