这三题该怎么解,怎样直接在函数中用全局数组

题目

img

img

img

img


我感觉没什么问题,运行也成功了但就是过不了关,怎样才能返回字符串,用到全局数组

把(char * names[5][10])定义这个*星号去掉试试,变为char names[50][10], 因为二维字符数组可以存储多个字符串了。把(char *names[5][10])代表是字符指针二维数组。打印姓名可以用%s对应names[r].修改如下:


#include <stdio.h>

int ids[5] = {10001,10002,10003,10004};
char  names[5][10] = {"张三", "李四", "王五", "赵六"} ;

int search(int key,int ids[],int len){
    
    int ret =-1;
    for(int i=0;i<len;i++){
        
        if(key==ids[i]){
            ret=i;
            break;
        }
    }
    
    return ret;
}

int main(void){
    
    int k=10001;
    int r = search(k,ids,sizeof(ids)/sizeof(ids[0]));
    
    if(r>-1){
        printf("%s\n",names[r]);
    }else{
        printf("null");
    }
    
    
    return 0;
}


img

names声明中去掉星号。
printf("%s",names[r]); names[r]就是字符串数组,不需要加星号。