大神有没有
上课的时候老师的课件上有一段程序是错误的。在指针数组那一节。
对于下面一个课件程序:
#include <stdio.h>
void main ( )
{
int i, j, t;
int a, b, c, d, e;
//将a,b,c,d,e的内存地址分别赋给p[0]...p[4]
int *p[5] = {&a, &b, &c, &d, &e};
//对a,b,c,d,e赋值
scanf ("%d,%d,%d,%d,%d", p[0], p[1], p[2], p[3], p[4]);
for (i = 0; i < 4; i++) //利用冒泡法排序
for (j = i + 1; j < 5; j++)
if (*p[i] > *p[j]) //交换p[i]、p[j]所指向的变量值
{
t = *p[i];
*p[i] = *p[j];
*p[j] = t;
}
for (i = 0; i < 5; i++) //显示排序后的结果
printf("%d ", *p[i]);
}
其中P[0]=&a的地址怎么能接收输入的地址呢?
下面这个也是一个课件程序,充分说明了程序有问题。
char c[3] = {'a', 'b', 'c'};
char *p[3];
p[0] = &c[0];
p[1] = &c[1];
p[2] = &c[2];
本人运行运行结果(假设输入:3 8 7 6 4):
3 4 6 7 8 这个是无法实现的。
求大神指点如何修改上面的程序可以达到用指针数组排序的目的!!!
上课的时候老师的课件上有一段程序是错误的。在指针数组那一节。
对于下面一个课件程序:
#include <stdio.h>
void main ( )
{
int i, j, t;
int a, b, c, d, e;
//将a,b,c,d,e的内存地址分别赋给p[0]...p[4]
int *p[5] = {&a, &b, &c, &d, &e};
//对a,b,c,d,e赋值
scanf ("%d,%d,%d,%d,%d", p[0], p[1], p[2], p[3], p[4]);
for (i = 0; i < 4; i++) //利用冒泡法排序
for (j = i + 1; j < 5; j++)
if (*p[i] > *p[j]) //交换p[i]、p[j]所指向的变量值
{
t = *p[i];
*p[i] = *p[j];
*p[j] = t;
}
for (i = 0; i < 5; i++) //显示排序后的结果
printf("%d ", *p[i]);
}
其中P[0]=&a的地址怎么能接收输入的地址呢?
下面这个也是一个课件程序,充分说明了程序有问题。
char c[3] = {'a', 'b', 'c'};
char *p[3];
p[0] = &c[0];
p[1] = &c[1];
p[2] = &c[2];
本人运行运行结果(假设输入:3 8 7 6 4):
3 4 6 7 8 这个是无法实现的。
求大神指点如何修改上面的程序可以达到用指针数组排序的目的!!!