1.指针数组的两种用法(菜单 命令行)
#include<stdio.h>
#include<string.h>
//演示:指针数组的用法之一 做菜单!
//演示:找错误 注意return
//求关键字在表中的位置
//一个入口,多个出口
void searKeyTable(const char* table[], const int size, const char* key, int* pose)
//void searKeyTable(const char** table, const int size, const char* key, int* pose)
{
int rv = 0;
int i = 0;
int inum = 0;
if (table == NULL || key == NULL || pose == NULL)
{
rv = -1;
printf("func searKeyTable:%d", rv);
return rv;
}
inum = (sizeof(table) / sizeof(*table));//4/4=1
//2 inum=1 并非主调函数里求出的size长度为4,说明,这里的形参table已经退化为了二级指针
//间接地证明了数组做函数参数的退化问题
for (i = 0; i < size; i++)
{
if (strcmp(key, table[i]) == 0)
{
*pose = i; //通过指针可以修改变量的值 也即通过形参把实参的值给改了
//break;
return rv;
}
}
}
#define DIN(a) (sizeof(a)/sizeof(*a))
//宏定义
int main()
{
int inum = 0;