这程序是什么意思啊?帮忙详细解释一下……

来源:百度知道 编辑:UC知道 时间:2024/06/03 19:07:57
#include <stdio.h>
#define MAX 10
void sub( );
main( )
{char s[MAX]=“ABCDEF”; sub(s);}

void sub(char *a)
{char *t;
if (*a) { t=a; t++; sub(t); putchar(*a); }
}

直接从课件上复制下来的,空格可能有点错误。是C程序设计里面讲 字符指针作函数参数进行传递 那里的内容,真的看不明白……见笑~~主函数那里的{char s[MAX]=“ABCDEF”; sub(s);}到底是干嘛的?s[MAX]是什么意思嘛?没这么用的吧……
反正帮我一步一步的解释一下吧,体谅一个超级菜鸟的心情哈,谢谢啦!

MAX上面定义为常量10
所以s[MAX]即s[10]
char s[MAX]=“ABCDEF”; 即声明了长度为10的字符数组 其中保存的为
字符串“ABCDEF” sub(s) 即把数组s的首地址作为参数传递给函数sub
即传址操作

再函数sub中 参数char *a定义了一个指向字符类型的指针

因为主函数中将a传递过来 因此指针a指向的是数组s的首地址

sub函数中 新定义了一个指向字符类型的指针

if(*a)这里是指对指针a取值,t=a指指针t指向a所指向的地址

而a指向的为数组s的首地址 那么t也指向数组s的首地址

t++指针指向下一个地址 即指向s[1] 然后依次递归调用sub函数。。

#define MAX 10
定义了MAX的值

char s[MAX]其实就是char s[10]

sub()这个函数其实就是用来显示s[10]这个数组中的值

可见你上课根本没认真.#include 及 #define是C的宏语句.include意思是在编译程序是包含指定的头文件,define意思是在一次编译时替换所定义的符号为定义值.用#define MAX 10 解释就是 定义 MAX 为 10 ,在一次编译的时候代码中所有MAX都将替换为10.s[MAX]就可以看作定义s[10]的数组. sub(s)调用函数传递s数组.s本身就是个字符串指针.所以s可以理解成char *s;

这是考你递归调用的知识.
void sub( );声明一个函数.
char s[MAX]=“ABCDEF”;定义一个字符串变量并赋值.最多是MAX(9)个字符.
sub(s),调用sub(s)函数.

下面是定义sub()函数.
void sub(char *a)
{char *t;
if (*a)//如果字符串没结束.
{
t=a; 字符指针t指向字符串a的首地址.
t++; 向前移动一个字节地址.