c - 如何更改变量值
问题描述
据我所知,当我们想要更改函数外部变量的值时,我们必须使用指针,如下所示:
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);
}
}
解决方案
在您的代码的参数上下文中,与char list[][MaxNamebuffer]
100% 相同,char (*list)[MaxNamebuffer]
并且两者均list
是指向字节数组的指针MaxNamebuffer
。
推荐阅读
- search - 如何在 Apache Solr 中创建包罗万象的复制字段?
- jquery - 使用ajax将数组发布到烧瓶
- google-analytics - 尝试设置 Arlo 集成电子商务跟踪时出现跨域问题
- sql - 如何使用带有 IN 的子请求编写子查询
- c# - 有没有办法将复杂的原始查询自动映射到实体模型?
- python - SKLearn ValueError:使用序列设置数组元素
- javascript - 如何防止 react native 中的 setInterval 阻塞运行动画?
- javascript - 如何在反应路由器中生成动态路由?
- ruby - 你怎么能期望一个方法用不同的参数被多次调用
- python - 切片索引 TypeError 和插入列表方法奇怪的行为