首页 > 解决方案 > 如何更改变量值

问题描述

据我所知,当我们想要更改函数外部变量的值时,我们必须使用指针,如下所示: https ://www.tutorialspoint.com/cprogramming/c_function_call_by_value.htm 。但我不明白为什么我能够更改name函数内变量的值。

#include<stdio.h>
#include<string.h>
#pragma warning(disable:4996)
#define MaxNameSize 14
#define MaxNamebuffer MaxNameSize+1
#define MaxNames 8

int main()
{

    void StringInsertionSort(int, int, int max, char [][MaxNamebuffer]);
    char name[MaxNames][MaxNamebuffer] = { "Taylor, Victor","Duncan, Denise","Ramdhan, Kamal","Singh, Krishna","Ali, Mechael","Sawh, Anisa","Khan, Carol","Owen, David" };
    StringInsertionSort(0, MaxNames - 1, MaxNamebuffer, name);
    printf("\nThe sorted names are:\n\n");
    for (int h = 0; h < MaxNames - 1; h++)
    {
        printf("%s \n", name[h]);
    }
    return(0);
}


void StringInsertionSort(int lo,int hi,int max, char list[][MaxNamebuffer])
{
    char key[MaxNamebuffer];
    for (int h = lo + 1; h <= hi; h++)
    {
        strcpy(key, list[h]);
        int k = h - 1;
        while (k >= lo && strcmp(key, list[k]) < 0)
        {
            strcpy(list[k + 1], list[k]);
            --k;
        }
        strcpy(list[k + 1], key);
    }

}

标签: c

解决方案


在您的代码的参数上下文中,与char list[][MaxNamebuffer]100% 相同,char (*list)[MaxNamebuffer]并且两者均list指向字节数组的指针MaxNamebuffer


推荐阅读