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语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
第二种情况指针p和q都是野指针,只想内存位置不定,修改为
char *p=(char *)malloc(sizeof(char)*100)char *q=(char *)malloc(sizeof(char)*100)
gets(p)
gets(q)
呵呵,这样子写不对,你要先给name和phone分配一些空间才能往里面填东西,比如像这样:char
name[100]
char
phone[100]
printf("请输入姓名和电话(姓名
电话)")
scanf("%s
%s",&name,&phone)