用指向指针的指针的方法对5个数排序并输出

用指向指针的指针的方法对5个数排序并输出,第1张

这题有两个错误。。
第一个:字符数组的赋值不是单纯的用"="赋值就行的。。
t=(c+j); (c+j)=(c+j+1);
(c+j+1)=t;
这三句是错的,在C语言里没有这种用法。不过在C++里用用string定义才行。。要对字符进行赋值只能用strcpy()函数。。。
第二个错误是 char t;这句话。。这个不是在定义数组。。而是一个字符的指针。。。只能这样char t[10];
修改后的代码如下:
#include<stdioh>
#include<stringh>
int main()
{
int i,j;
char a[5][10],b[5],c;
for(i=0;i<5;i++)
b[i]=a[i];
printf("input 5 strings\n");
for(i=0;i<5;i++)
scanf("%s",b[i]);
c=b;
char t[10];
for(i=0;i<4;i++)
for(j=0;j<5-i;j++)
if(strcmp((c+j),(c+j+1))>0)
{
strcpy(t,(c+j));
strcpy((c+j),(c+j+1));
strcpy((c+j+1),t);
}
c=b;
for(i=0;i<5;i++)
printf("%s",(c+i));
return 0;
}
望采纳,。。

int i=10; //定义一个整型变量i值为10
int p=&i; //定义一个整型指针变量p并指向变量i,注意只有类型相同的才可以指。
cout<<p<<endl; //输出p指向的变量i的值,加号就表示输出的是指针指向变量的值。
cout<<p<<endl; //输出p指向变量i的地址,不加 号代表的是p本身的值。
p=20; //因为加了 号代表的是p指向变量的值,所以可能通过这样修改变量i的数据。
//此时i的值就通过指针p修改为20

如楼上说的三、四处确实有问题。
scanf("%d", str+i);应该改为scanf("%d", (str+i));
scanf的第二个参数是指针类型,而str+i是指针的指针类型。(str+i)才是指针类型。
printf("%-6d", str[i]);应该改为printf("%-6d", (str[i]));
因为str[i]是一个指针,所以应该用取值。
楼主你用什么编译器啊?我用gcc立刻发现这两个警告了。

定义指针变量
char p;
这样p保存字符变量的地址。
char a=′A′;
p=&a;
p指向a。putchar(p)通过间接引用输出p指向的字符变量的值。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/10536201.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-09
下一篇2023-05-09

发表评论

登录后才能评论

评论列表(0条)

    保存