c语言简单程序解释一下
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言简单程序解释一下相关的知识,希望对你有一定的参考价值。
两个升序列,[1,3,5],[4,6,7],利用指针把他们合并成一个序列并升序输出,可以定义一个新的数组
#include <stdio.h>
#define A_NUM 3
#define B_NUM 3
#define C_NUM A_NUM+B_NUM
void display(int *p,int c[])
for(p=c; p-c< 6;) //p-c<什么意思啊?
printf("%d ",*p++);
printf("\n");
int *unite(int a[], int b[],int c[])
int *pa, *pb, *pc;
pa = a;
pb = b;
pc = c;
while(pa-a<A_NUM && pb-b<B_NUM) //括号里面意思不明白
if(*pa<*pb)
*pc++=*pa++;
else
*pc++=*pb++;
while(pa-a<A_NUM)
*pc++=*pa++;
while(pb-b<B_NUM)
*pc++=*pb++;
return pc;
main()
int a[A_NUM]=1,3,5;
int b[B_NUM]=4,6,7;
int c[C_NUM],*p;
p = unite(a,b,c);
display(p,c);
pa-a,pa-b,pa-c我不太清楚什么意思啊?
恩,,没办法,我悟性差啊
开始把a赋值给pa,pa的地址是a数组的首地址&a[0],
if(*pa<*pb)
*pc++=*pa++;
该程序采用对指针的操作实现对数据的操作,
pa++是将pa指向了&a[1];
然后用pa-a实际上就是控制它不能超过数组的范围。
和用一个i控制实质没什么区别。
不过这样倒是可以省去一些空间 参考技术A pa是个一维数组,有三个连续的存储空间分别放了:a,b,c这里的意思应该是对pa里的a,b,c进行取内 参考技术B //p-c<什么意思啊?
p和c都是指针,c就是数组的首地址
比如一个数组a[10];
那a就是&a[0]
&a[1] - &a[0]等于1
&a[2] - &a[0]等于2
&a[2] - &a[1]等于1
以此类推。。。 参考技术C 这里的p=c,是将数组c[0]的地址给p,下面用的for循环,*p++就是从c[0]一直到c[5]六个数,所以p-c的值是一直改变的,如果画个图就更好懂了
C[0] <==p p向下移动
C[1]
C[2]
C[3]
C[4]
C[5] 参考技术D 这不是我的那个代码嘛?指针指向数组了
a,b,c是数组的首地址
pa-a,pb-b,pc-c就是代表相应的数组pa,pb,pc指针在数组中遍历了元素的个素
以上是关于c语言简单程序解释一下的主要内容,如果未能解决你的问题,请参考以下文章