用scanf读取字符串

用scanf读取字符串

我有点糊涂了。我的印象是用正确的方式读取C字符串scanf()沿着…的路线

(别管可能的缓冲区溢出,这只是一个简单的例子)

char string[256];scanf( "%s" , string );

然而,以下几点似乎也有效,

scanf( "%s" , &string );

这只是我的编译器(GCC),纯粹的运气,还是别的什么?


月关宝盒
浏览 1655回答 3
3回答

婷婷同学_

我认为以下所述是正确的,可能会有所帮助。如果你发现任何错误,请随时改正。我是新来的C。char str[]类型char的值数组,并在内存中具有自己的地址。类型char的值数组,其在内存中的地址与数组中的元素一样多。包括终止空字符'\0' &str, &str[0]和str,它们都表示内存中相同的位置,即数组的第一个元素的地址。strChar*strPtr=&str[0];/声明和初始化或者,您可以将其分成两部分:char *strPtr; strPtr = &str[0];strPtr是指向charstrPtr点阵strstrPtr是一个在内存中具有自己地址的变量。strPtr存储地址值的变量。&str[0]strPtr内存中自己的地址不同于它存储的内存地址(内存中数组的地址,即a.k.a&str[0])。&strPtr表示strPtr本身的地址。我认为您可以将指向指针的指针声明为:char **vPtr = &strPtr;用strPtr指针的地址声明和初始化或者你可以分成两半:char **vPtr;*vPtr = &strPtr*vPtr指向strPtr指针*vPtr是一个在内存中具有自己地址的变量。*vPtr是存储Address&strPtr值的变量。最后评论:你不能str++, str地址是const,但你可以strPtr++
打开App,查看更多内容
随时随地看视频慕课网APP