|
匿名鱼油
发表于 2017-7-25 10:05:49
本帖最后由 匿名 于 2017-7-25 10:13 编辑
感谢,我又把代码重新标注了一遍,并且加入了点别的代码,好让你理解我的想法(代码可能无法通过编译,只作为理解使用),代码如下
# include <stdio.h>
# include <windows.h>
# include <string.h>
static int TemporaryVariables=0; //用来存放下标
static char TemporaryArray[2][20]={'0'}; //用来存放参数(字符串)的数组,这里应该是这样的下标 [无限大] [0] 好为多次调用做准备; 顺便初始化数组元素,防止数组中出现其他数据
//由于数组和和变量均在函数外,理论上来说都是全局形式的,不会因为函数返回而被释放,为了能更直观的表达我的意思,在全局数组和变量前都加上"static" 声明为静态局部变量,用于扩充作用域
char *InputOutput(char *Click, char *Keypress) //函数的定义
{
if (Click!=NULL) //判断参数(Click)是否为空,如果不为空,就把数据存到二维数组里
{
strcpy(TemporaryArray[TemporaryVariables] [0], Click); //这个就是二维数组,下标为:[TemporaryVariables] [0] 的二维数组
TemporaryVariables++; //下标加一
}
if (Keypress!=NULL) //判断参数(Click)是否为空,如果不为空,就把数据存到二维数组里
{
strcpy(TemporaryArray[TemporaryVariables] [0], Keypress); //这个就是二维数组,下标为:[TemporaryVariables] [0] 的二维数组
TemporaryVariables++; //下标加一
}
// TemporaryVariables 是用来存放和下标的,不做索引使用,只是为了让参数依次存放到数组中
//strcat(TemporaryArray[0], TemporaryArray[1]); //这里不要连接两个字符,容易混淆
/*
// TemporaryArray[TemporaryVariables+1][0]={'\0', '\0', '\0', '\0', '\0', '\0', }; //这段的目的是用来标志数组的结束,方便主调用函数的判断,每次传递进来新数据都会覆盖这一段,如果不向这段写入数据,则将这段定义为结束标志
*/
return TemporaryArray[0][0]; //返回数组中保存的数据
}
int main()
{
//MessageBox(NULL, InputOutput("91", "55"), NULL, MB_OK); //这里先不通过通过消息框的形式输出返回值,容易混淆
InputOutput('Thank', "You") // 这里只是象征性的调用一下,我的想法在下边↓↓↓↓↓↓↓↓↓
/*
//返回值不一定是数组首地址的形式,也可以返回指针,通过检测是否为'\0'来判断是否结束,这整段代码用的是返回数组首地址的形式传递字符串参数
InputOutput("123", "456"); //此时调用完函数 应该是得到 TemporaryArray[0][0]="123", TemporaryArray[1][0]="456", TemporaryArray[2][0]="\0" 这样的返回值
InputOutput("789", "JQK"); //此时调用完函数 应该是得到 TemporaryArray[0][0]="123", TemporaryArray[1][0]="456", TemporaryArray[2][0]="789", TemporaryArray[3][0]="JQK", TemporaryArray[4][0]="\0" 这样的返回值
InputOutput("QKA", "大小王"); //此时调用完函数 应该是得到 TemporaryArray[0][0]="123", TemporaryArray[1][0]="456", TemporaryArray[2][0]="789", TemporaryArray[3][0]="JQK", TemporaryArray[4][0]="QKA", TemporaryArray[5][0]="大小王", TemporaryArray[6][0]="\0" 这样的返回值
// 每次调用结束都返回数据,因为不知道哪会就不在调用了,所以每次都返回;上边的这段是我构想的返回形式,方便理解,不一定能通过编译
*/
return 0;
}
|
|