谁能详解一下这个C程序呀

作者&投稿:郴诗 (若有异议请与网页底部的电邮联系)
#include"stdio.h"
#include"stdarg.h"/*前面是头文件的声明*/
/*总体上来说,这是一个省略号参数的例子,其中涉及到了几个宏的使用,它们都是在stdarg.h头文件中*/
int sum( int, ... );/*函数sum的声明*/
int main( void ) {/*主入口函数main*/
int answer = sum( 4, 4, 3, 2, 1 );/*定义整形变量answer,其值用调用sum函数的结果初始化*/
printf( "The answer is %d\n", answer );/*输出结果*/
return( 0 );/*主函数结束,正常返回*/
}
int sum( int num, ... ) {/*函数sum的定义,这里有一个省略号参数*/
int answer = 0;/*定义整形变量answer,其值用0初始化*/
va_list argptr;/*定义va_list类型变量,其实就是一个字符指针*/
va_start( argptr, num );/*va_start是一个宏,定义指针起始位置*/
for( ; num > 0; num-- )
answer += va_arg( argptr, int );/*利用宏va_arg在循环中把参数中的值相加并传给answer*/
va_end( argptr );/*va_start是一个宏,定义指针为空*/
return( answer );/*返回结果*/
}

————————————
为汶川灾区同胞祈祷平安!

谁能给详解一下这个C程序?~

int i=5;把5赋值给整数i,
int j=10;把10赋值给整数j
int*p=&i;&i是整数i的地址,把i的地址赋值给指针p
int*q=&j;同上
int a[5];声明整数数组a,数组a有五个整数
p=&a[1];把数组中第二个元素的地址赋值给指针p
q=&a[4];把数组中第五个元素的地址赋值给指针q
printf("%d",q-p);因为q所指的是a【4】,p所指的是【1】,q-p为(4-1)*4也就是12,a【4】和啊【1】相差3个索引值,地址的差值是索引值乘以指针所指的类型的字节大小,因为所指的类型是int类型,int4个字节大小。
return 0;

void fun (char * s, char * t) //作用:字符串复制
{ int i, d;
d = strlen(s); //strlen函数查出字符串s的长度,存于d
for (i = 0; i<d; i++) t[i] = s[i]; //先将s原样赋给t
for (i = 0; i<d; i++) t[d+i] = s[d-1-i];//再将s倒过来接到t后面
/************found************/
t[2*d] = '\0'; //记得字符串的结尾时要补结束标志的,不然t只是字符数组
}

效果:
若s为s:abcdefg 则t为 abcdefggfedcba

求大神帮忙解释一下下面这段C程序,求详细!
答:int a[5][2] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };这句语句是定义一个5行2列的2维数组a,这里你可以理解为5个拥有"2个元素的数组"的集合 int* p = a[0];整型指针指向2维数组的首元素的地址 int (*p2)[2] = &a[1];定义p2是一个指向数组的指针,现在p2指向a[1],即...

有没有C语言大神,给我讲讲这个程序怎么运行?一步步详细分析一下,拜托...
答:输出结果如下:第一行的数字相当于标尺,表示第几个字符位,为方便后续说明 c表示输出一个字符,分别对应输出c1,c2,c3,c4和c5 '\101'表示八进制101即十进制65对应的ASCII字符,为'A',所以c4='A''\116'表示八进制116即十进制78对应的ASCII字符,为'N',所以c5='N''\t'表示水平制表符Tab,...

请解释下这个c语言程序,不懂
答:int a,b=0,c; 定义a,b,c三个整型,其中b的值为0 scanf("%d",&a); 由电脑输入一个值,并由程序读取,且该值赋给a while(a>10) 用赋给a的值与10做比较,这是一个条件语句,当a>10时,执行下面内容 c=a%10; c的值为a与10取余的值,比如a为20,则c为0;a为15,...

帮我解释一下这题c程序
答:inc1ude<stdio.h> main() { int a[]={1,2,3,4,5,6},*p; p=a;//此时p指向这个数组,也可以说是指向数组的第一个元素 *p=2;//*p也就是a[0],故此时a[0] = 2 p++;//p++,向后偏移一个整形位置,即指向了a[1], *p=4;//故a[1] = 4 for(int i=...

帮看一下这个C语言程序的分析,,,谢啦,,
答:,初始化为'P','r','o','g','r','a','m','\0',另外顶一个字符指针ptr for(ptr=a;ptr

求高手解答一下这个C程序,谢谢!
答:include <stdio.h> //包含stdio.h头文件,以便使用输出函数,比如printf#include <math.h> //包含math.h头文件,以便使用sin, cos函数int main() //C程序入口函数{ const double PI=3.1415926; //定义常量pi int i = 10; //定义变量i,用于表示角度,并且初始值为10 ...

初学C,想请高手讲解下这个程序每个步骤的具体意思,谢谢了
答:digit_seen[digit]=TRUE; //在循环没有退出的情况下,程序往下运行到句。功能是:把digit_seen数组的第digit(就是当前位的那个数字)记录为TRUE,说明n里面某一位有过digit n/=10; //这句和n=n/10的效果是一样的,都是把n缩小10倍的整数部分赋值给n(整型除以整型得到的数还是整型)} //到...

谁能给详解一下这个C程序?
答:int*p=&i;&i是整数i的地址,把i的地址赋值给指针p int*q=&j;同上 int a[5];声明整数数组a,数组a有五个整数 p=&a[1];把数组中第二个元素的地址赋值给指针p q=&a[4];把数组中第五个元素的地址赋值给指针q printf("%d",q-p);因为q所指的是a【4】,p所指的是【1】,q-p为(4...

有没有人能帮我讲解一下这个C语言程序的执行过程?
答:if (s[i]!='c')s[j++]=s[i];//每有一个不为'c'的单位出现,j自加1;并且该单位的值,重新赋值给数组s,从s[0]开始,因为j初值为0 else//这加个else便于理解,等价于源代码;该单位的值为'c',就向该单位赋予空值;s[j]='\0';puts(s);}//例如输入abcdec,分别占据s[0]='...

懂C语言帮忙注释下这个程序!
答:这样当前的分界值就加入到“已排序部分”,分界值位置向后移动一个。当分界值到达n-1时,排序完成。param 无 无参数;隐含入参:全局变量struct person数组st 隐含入参:全局变量n,表示数组st中数据的个数 return void / void sort(){ struct person temp; /* 用于交换的临时变量 */ int i,j,...