C语言 指针基本小问题???
发布网友
发布时间:2023-07-31 22:29
我来回答
共4个回答
热心网友
时间:22小时前
把星号都去掉:
if(ipx[j]>(ipx[j-1])) {x=ipx[j];ipx[j]=ipx[j-1];ipx[j-1]=x;}
此外 for(i=0;i<5;i++) //i<5
对一维数组的访问有ixp[j],*(ixp+j)等形式,*ixp[j]不行。
PS: 用 ipx=stu;代替ipx=&stu[0];会更简洁。
数组名时数组首地址,是指针常量
故此,对一维数组的访问还可以是*(stu+j)
热心网友
时间:22小时前
ipx是指针,指向stu数组,指针不能这样调用
ipx[j]已经是这个数组里面的内容的,再取内容就会报错了
应该为*(ipx+j)
这样应用。
热心网友
时间:22小时前
int _tmain(int argc, _TCHAR* argv[])
{
int x,i,j,*ipx,stu[6]={1,2,3,4,5,6,};
ipx=stu;
for(i=0;i<5;i++)//应该是5
for(j=6;j>i;j--)//应该是6
if(ipx[j]>ipx[j-1])
{x=ipx[j];ipx[j]=ipx[j-1];ipx[j-1]=x;}
for(i=0;i<6;i++)
printf("%d",*ipx++);
return 0;
}
不用解引用,指针加上下标就是该值了,还有,你的数组长是6,所以循环条件应该是这样
热心网友
时间:22小时前
#include"stdio.h"
main()
{
int x,i,j,*ipx,stu[6]={1,2,3,4,5,6}; //6后面的逗号去掉
ipx=stu;
for(i=0;i<4;i++)
for(j=5;j>i;j--)
if(ipx[j]>(ipx[j-1])) //*去掉
{
x=ipx[j];ipx[j]=ipx[j-1];ipx[j-1]=x;
}
for(i=0;i<6;i++)
printf("%d",*ipx++);
getchar();
}