c语言指针输入

vc6.0
#include<stdio.h>
int main()
{
char *str;
str="l love china";
puts(str);

return 0;
}

运行成功

int main()
{
char *str;
scanf("%s",str);
puts(str);

return 0;
}
出错 在输出时无法显示 调试就出错了
在我看来这二者时一样的 求指教

#include<stdio.h>

int main()

{

int a,b,c,s[3],t;

int *x,*y,*z;//定义指针变量 

x=&a;//将a的地址赋给指针x,下同 

y=&b;

z=&c;

scanf("%d%d%d",x,y,z);

s[0]=*x;//将指针x所指向的变量值赋给数组s的第一个元素;依次类推 

s[1]=*y;

s[2]=*z;

for(int i=0;i<3;i++)//冒泡排序 

for(int j=0;j<3-i-1;j++)

if(s[j]<s[j+1])

{

t=s[j];

s[j]=s[j+1];

s[j+1]=t;

}

for(int i=0;i<3;i++)

printf("%d ",s[i]);

return 0;

}

——————————————————————————

#include<stdio.h>

void input(int *a)

{

int *p=a;//将数组a的首地址赋给指针p 

for(int i=0;i<10;i++)

scanf("%d",&p[i]);//指针下标法输入 

}

int max_min(int *a)

{

int *p=a;//将数组a的首地址赋给指针p

int max,min,x=0,y=0,t;

max=min=p[0];

for(int i=0;i<10;i++)

{

if(p[i]>=max)

{

max=p[i];

x=i;

}

if(p[i]<=min)

{

min=p[i];

y=i;

}

}

t=p[y];

p[y]=p[0];

p[0]=t;

t=p[9];

p[9]=p[x];

p[x]=t;

}

void output(int *a)

{

int *p=a;//将数组a的首地址赋给指针p

for(int i=0;i<10;i++)

printf("%d ",p[i]);//指针下标法输出 

}

int main()

{

int a[11];

input(a);//调用函数,下同 

max_min(a);

output(a);

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-04
指针的使用要先初始化,上面正确是因为会自动为str分配一个地址,下面的没有初始化。
第2个回答  2013-04-04
下面这种情况是不可以的,因为指针没有明确的指向,str的值是任意的,也许所指向的区域不是用户可以访问的内存区域,或者根本不存在的地方,可以将指针换成数组形式,即char str[]。另外,scanf不能输入空格,当遇到空格或enter时代表字符串结束。
第3个回答  2013-04-04
str="l love china"是吧"l love china"的地址赋给str,str只能是一个地址, scanf("%s",str);是要把str当变量赋值,自然是错的
第4个回答  2013-04-04
str仅仅是一个没有初始化的指针,接下来需要动态分配内存来存放输入的字符串才可以

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网