学点 C 语言(36): 函数 - 数组参数
来源:互联网 发布:暗黑破坏神2mac中文版 编辑:程序博客网 时间:2024/04/28 00:41
学点 C 语言(36): 函数 - 数组参数
数组参数属于指针参数.
指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管你愿意与否, 它就是指针, 指向第一个值的指针.
1. 数组参数就是指向第一个元素的指针:
#include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接声明为指针:
#include <stdio.h>
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形参中指定维数也不起作用:
#include <stdio.h>
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i < si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指针, 其值就有被修改的可能:
#include <stdio.h>
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i < sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i < si; i++) {
p[i]++;
}
}
5. 如果是字符数组, 它自己能判断数组尾界:
#include <stdio.h>
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
- 学点 C 语言(36): 函数 - 数组参数
- 学点 C 语言(36): 函数 - 数组参数
- C 语言 函数 参数 3个点
- 【每天学点C语言】-3-指针与数组
- C语言中数组做函数参数
- 二维数组作为函数参数(C语言)
- C语言-数组-4函数参数
- c语言 数组作函数参数
- C语言数组作为函数参数
- C语言数组作为函数参数
- C语言数组名作为函数参数
- C语言 函数参数为数组
- C语言数组作为函数参数
- C语言用数组作函数参数
- C语言:数组名作为函数参数
- C语言--数组做函数参数
- C语言:多维数组做函数参数
- 【每天学点C语言】-4-指针与函数
- android120--后台线程与UI交互
- 广播的妙用-android程序完全退出,销毁所有activity方法
- Filter(过滤器)以及工作流程
- 提高写代码的能力
- 引用xml内容,换行操作的方法1
- 学点 C 语言(36): 函数 - 数组参数
- Android 通用底部导航
- StringCbPrintf 函数
- 自定义TabHost实现背景图片随选项卡切换滑动效果
- Regex.Split 与String.Split 使用小结
- Spring缺少aspectjweaver.jar异常
- android关于ListView(列表)
- ListView及异步加载图片问题汇总
- 20130410,微软4月10日发布9个安全补丁