c语言指针输入
发布网友
发布时间:2022-04-29 15:54
我来回答
共5个回答
热心网友
时间:2023-10-17 04:20
看来楼主没有理解指针必须要初始化这一定律啊。
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语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
热心网友
时间:2023-10-17 04:20
你定义了一个指针s,却不让他指向什么,scanf("%d",s+i);当人会有问题
#include
int
main()
{
int
a,b,i;
int
*s;
int
p[8];
s
=
p;
for(i=0;i<8;i++)
scanf("%d",s+i);
for(i=0,a=1;i<7;i++)
{
a=i+1;
for(;a<8;a++)
if
(*(s+i)<*(s+a))
{b=*(s+i);*(s+i)=*(s+a);*(s+a)=b;}
}
for(i=0;i<8;i++)
printf("%d",*(s+i));
return
0;
}
指针一定要指向一个地址
热心网友
时间:2023-10-17 04:21
#include
int
main()
{
char
str1[100]
=
{0};
char
*str
=
str1;
scanf("%s",str);
puts(str);
return
0;
}
改成上面这样就好了.
因为指针只是一个地址,而指针指向的是一个字符串.需要在内存里面开辟一片空间,不然就会报错0x00000005.
热心网友
时间:2023-10-17 04:20
看来楼主没有理解指针必须要初始化这一定律啊。
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语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
热心网友
时间:2023-10-17 04:21
scanf("%s",str);
应该是scanf("%s",&str);
地址要叫上&符号
str实际上是字符串的地址,对其进行引用加&,对内容引用加*
热心网友
时间:2023-10-17 04:20
你定义了一个指针s,却不让他指向什么,scanf("%d",s+i);当人会有问题
#include
int
main()
{
int
a,b,i;
int
*s;
int
p[8];
s
=
p;
for(i=0;i<8;i++)
scanf("%d",s+i);
for(i=0,a=1;i<7;i++)
{
a=i+1;
for(;a<8;a++)
if
(*(s+i)<*(s+a))
{b=*(s+i);*(s+i)=*(s+a);*(s+a)=b;}
}
for(i=0;i<8;i++)
printf("%d",*(s+i));
return
0;
}
指针一定要指向一个地址
热心网友
时间:2023-10-17 04:22
str仅仅是一个没有初始化的指针,接下来需要动态分配内存来存放输入的字符串才可以
热心网友
时间:2023-10-17 04:21
#include
int
main()
{
char
str1[100]
=
{0};
char
*str
=
str1;
scanf("%s",str);
puts(str);
return
0;
}
改成上面这样就好了.
因为指针只是一个地址,而指针指向的是一个字符串.需要在内存里面开辟一片空间,不然就会报错0x00000005.
热心网友
时间:2023-10-17 04:21
scanf("%s",str);
应该是scanf("%s",&str);
地址要叫上&符号
str实际上是字符串的地址,对其进行引用加&,对内容引用加*
热心网友
时间:2023-10-17 04:22
str仅仅是一个没有初始化的指针,接下来需要动态分配内存来存放输入的字符串才可以
热心网友
时间:2023-10-17 04:20
看来楼主没有理解指针必须要初始化这一定律啊。
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语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
热心网友
时间:2023-10-17 04:20
你定义了一个指针s,却不让他指向什么,scanf("%d",s+i);当人会有问题
#include
int
main()
{
int
a,b,i;
int
*s;
int
p[8];
s
=
p;
for(i=0;i<8;i++)
scanf("%d",s+i);
for(i=0,a=1;i<7;i++)
{
a=i+1;
for(;a<8;a++)
if
(*(s+i)<*(s+a))
{b=*(s+i);*(s+i)=*(s+a);*(s+a)=b;}
}
for(i=0;i<8;i++)
printf("%d",*(s+i));
return
0;
}
指针一定要指向一个地址
热心网友
时间:2023-10-17 04:21
#include
int
main()
{
char
str1[100]
=
{0};
char
*str
=
str1;
scanf("%s",str);
puts(str);
return
0;
}
改成上面这样就好了.
因为指针只是一个地址,而指针指向的是一个字符串.需要在内存里面开辟一片空间,不然就会报错0x00000005.
热心网友
时间:2023-10-17 04:21
scanf("%s",str);
应该是scanf("%s",&str);
地址要叫上&符号
str实际上是字符串的地址,对其进行引用加&,对内容引用加*
热心网友
时间:2023-10-17 04:22
str仅仅是一个没有初始化的指针,接下来需要动态分配内存来存放输入的字符串才可以
热心网友
时间:2023-10-17 04:20
看来楼主没有理解指针必须要初始化这一定律啊。
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语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
热心网友
时间:2023-10-17 04:20
你定义了一个指针s,却不让他指向什么,scanf("%d",s+i);当人会有问题
#include
int
main()
{
int
a,b,i;
int
*s;
int
p[8];
s
=
p;
for(i=0;i<8;i++)
scanf("%d",s+i);
for(i=0,a=1;i<7;i++)
{
a=i+1;
for(;a<8;a++)
if
(*(s+i)<*(s+a))
{b=*(s+i);*(s+i)=*(s+a);*(s+a)=b;}
}
for(i=0;i<8;i++)
printf("%d",*(s+i));
return
0;
}
指针一定要指向一个地址
热心网友
时间:2023-10-17 04:21
#include
int
main()
{
char
str1[100]
=
{0};
char
*str
=
str1;
scanf("%s",str);
puts(str);
return
0;
}
改成上面这样就好了.
因为指针只是一个地址,而指针指向的是一个字符串.需要在内存里面开辟一片空间,不然就会报错0x00000005.
热心网友
时间:2023-10-17 04:21
scanf("%s",str);
应该是scanf("%s",&str);
地址要叫上&符号
str实际上是字符串的地址,对其进行引用加&,对内容引用加*
热心网友
时间:2023-10-17 04:22
str仅仅是一个没有初始化的指针,接下来需要动态分配内存来存放输入的字符串才可以