c语言 指针输入

Python039

c语言 指针输入,第1张

看来楼主没有理解指针必须要初始化这一定律啊。

char

*str

str="l

love

china"

指针

str

是指向字符的,也就是指向了一个地址

赋值为str="l

love

china"

这里指针str的值也就是字符串

"l

love

china"

的首地址

而输出的时候puts(str)

puts中的参数当然也是首地址了,如果puts的参数是字符数组,那实际上也是地址,因为数组的名字就是数组第一个元素的地址。当地址是字符串的地址时,指针会自动下移一个位置。直到遇到'\0'为止

而下面这个

char

*str

scanf("%s",str)

指针没有初始化,所以是不对滴。

其实在c语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题

如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。无论什么类型的指针,只要是“常指针”就有三种情况不可改变:

指针是常量——这个指针只能指向申明时指向的目标,不能指向别处。

指向的内容是常量——不能通过这个指针改变指向的内容,但指针可以指向别处,也可以通过其他方法改变该指针指向的内容。

指针和指向的内容都是常量——这时指针不能再指向别处,它指向的内容也不可通过这个指针修改(用其他方法修改内容仍然是可以的)。

数组名是常量指针,所以指针不能再指向别处(即改变指向)。

这个问题中,p是普通指针,所以可以改变指向;p指向的内容是由malloc申请的自由空间,所以它们的内容肯定是能够改变的,否则申请这个空间就没有多少意义了。