黑马程序员技术交流社区
标题:
这个程序 ,怎么用指针 改改 。
[打印本页]
作者:
远汀枫舞
时间:
2015-3-23 18:53
标题:
这个程序 ,怎么用指针 改改 。
#include <stdio.h>
void max(int *p);
int main()
{
int a[6]={10,11,12,12,13,15};
int size = sizeof(a);
printf("%d\n",size);
max(a);
return 0;
}
void max(int *p)
{
int max = p[0];
int size2 = sizeof(p);
for(int i = 0;i < size2;i++)
{
printf("p[%d]=%d\n",i,p[i]);
if(p[i]>max)
max = p[i];
}
printf("max=%d\n",max);
}
作者:
417284911
时间:
2015-3-23 19:00
不明白你的需求是什么
作者:
远汀枫舞
时间:
2015-3-23 19:12
就是 我定义了一个数组a[6]; 准备遍历它 ,但想用 指针遍历 , 可是 怎么我的程序 后面 会多两个不知道的数字 。 我知道 指针是 8 位的 ,所以 肯定 会输出 8个数据 。 但怎么 来改 ,让它 只输出 6 个数据 。
作者:
xiezhongmin
时间:
2015-3-23 19:41
int size2 = sizeof(p);这句错了,自己慢慢想,打字辛苦!
作者:
木线
时间:
2015-3-23 20:20
#include <stdio.h>
void max(int p[]);
int main()
{
int a[6] = {10, 11, 12, 12, 13, 15};
int size = sizeof(a);
printf("%d\n", size);
max(a);
return 0;
}
void max(int p[])
{
int max = p[0];
int size2 = sizeof(p)/sizeof(int);
for (int i; i < 6; i++)
{
if (p[i] > size2 ) {
max = p[i];
}
printf("p[%d] = %d\n", i, p[i]);
}
printf("max = %d\n", max);
}
作者:
木线
时间:
2015-3-23 20:32
我大概明白你的意思,你要写成指针的原因就是要数组进去,而数组是以指针的形式传递的(后台实际是这样传的),并不是直接把形参写成指针。
其次就是sizeof(p),p是指针,那sizeof(p),就是指针的大小,8个字节,所以你的size2 = 8,所以你数组遍历的时候就是i < 8,就会打印出8个元素出来,而你的数组只定义了,六个,那剩下的两个打出来就是乱码。
还有用sizeof()来描述数组大小的时候,定义个数组int array[ ],sizeof(array)是数组元素占据的字节数,不是数组元素的个数,字节数除以数组类型占据的字节数才是数组元素的个数,如果是整型就要除以sizeof(int),小树的话就要除以sizeof(double).
作者:
木线
时间:
2015-3-23 20:35
粘贴错了,上面的代码有问题,稍等我对的贴上来。
作者:
木线
时间:
2015-3-23 20:38
#include <stdio.h>
void max(int p[]);
int a[6] = {10, 11, 12, 12, 13, 15};
int main()
{
int size = sizeof(a);
printf("%d\n", size);
max(a);
return 0;
}
void max(int p[])
{
int max = p[0];
int size2 = sizeof(a)/sizeof(int);
for (int i; i < size2; i++)
{
if (p[i] > size2 ) {
max = p[i];
}
printf("p[%d] = %d\n", i, p[i]);
}
printf("max = %d\n", max);
}
作者:
木线
时间:
2015-3-23 20:39
结果是:
24
p[0] = 10
p[1] = 11
p[2] = 12
p[3] = 12
p[4] = 13
p[5] = 15
max = 15
Program ended with exit code: 0
作者:
流风124
时间:
2015-3-23 22:43
#include <stdio.h>
void max(int *p,int n);
int main()
{
int a[6]={10,11,12,12,13,15};
int size = sizeof(a)>>2;
printf("数据个数%d\n",size);
max(a,size);
return 0;
}
void max(int *p,int n)
{
int max = p[0];
//int size2 = sizeof(p);这里不对,永远8位,指针长度
for(int i = 0;i < n;i++)
{
printf("p[%d]=%d\n",i,p[i]);
if(p[i]>max)
max = p[i];
}
printf("max=%d\n",max);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2