当前位置:网站首页>一维数组&指针
一维数组&指针
2022-08-09 12:25:00 【进击的李知因】
导言:对于一维数组而言,数组作形参指针变量作形参,都可以用下标法和指针法来引用数组元素。
1、数组作形参
?下标法(容易理解)
地址:&a[i]
元素:a[i]
?指针法(推荐使用)
地址:a+i
元素:*(a+i)
?因为编译器将a[i]解释为*(a+i)需要时间,所以直接将a[i]写成*(a+i)可提高执行效率
2、指针变量作形参
?下标法
地址:&p[i]
元素:p[i]
?指针法
地址:p+i
元素:*(p+i)
两个对比
- p+1?p++
- 都不是简单的+1,1指的是1个内存单元
- p++p=p+1,p的值改变了
- p+1并没有改变p的值
- a?p
- a是地址常量
- p是地址变量
总结:对于一维数组,
在主函数中,将数组名作为实参,
在被调函数中,将数组作为形参,引用元素用
下标法→便于理解
指针法→提高效率
?没必要用到指针变量
示例
数组作形参
1.1 下标法
void InputArray(int a[], int n) /* 形参声明为数组,输入数组元素值 */
{
int i;
for (i=0; i<n; i++)
scanf("%d", &a[i]); /* 用下标法访问数组元素 */
}
void OutputArray(int a[], int n) /* 形参声明为数组,输出数组元素值 */
{
int i;
for (i=0; i<n; i++)
printf("%4d", a[i]); /* 用下标法访问数组元素 */
printf("\n");
}
1.2 指针法
void InputArray(int a[], int n) /* 形参声明为数组,输入数组元素值 */
{
int i;
for (i=0; i<n; i++)
scanf("%d", a+i); /* 这里a+i等价于&a[i] */
}
void OutputArray(int a[], int n) /* 形参声明为数组,输出数组元素值 */
{
int i;
for (i=0; i<n; i++)
printf("%4d", *(a+i)); /* 这里*(a+i)等价于a[i] */
printf("\n");
}
指针变量作形参
1.3 下标法
void InputArray(int *p, int n) /* 形参声明为指针变量,输入数组元素值 */
{
int i;
for (i=0; i<n; i++)
scanf("%d", &p[i]); /* 形参声明为指针变量时也可以按下标方式访问数组 */
}
void OutputArray(int *p, int n) /* 形参声明为指针变量,输出数组元素值 */
{
int i;
for (i=0; i<n; i++)
printf("%4d",p[i]); /* 形参声明为指针变量时也可以按下标方式访问数组 */
printf("\n");
}
1.4 指针法
void InputArray(int *p, int n) /* 形参声明为指针变量,输入数组元素值 */
{
int i;
for (i=0; i<n; i++)
scanf("%d", p+i); /* 用指针法访问数组元素 */
}
void OutputArray(int *p, int n) /* 形参声明为指针变量,输出数组元素值 */
{
int i;
for (i=0; i<n; i++)
printf("%4d", *(p+i)); /* 用指针法访问数组元素 */
printf("\n");
}
边栏推荐
猜你喜欢
鹅厂机器狗花式穿越10m梅花桩:前空翻、单桩跳、起身作揖...全程不打一个趔趄...
Resolved IndentationError: unindent does not match any oute r indentation Level
ViewPager fragments of nested data blank page abnormal problem analysis
世界第4疯狂的科学家,在103岁生日那天去世了
Flutter入门进阶之旅(五)Image Widget
Flutter入门进阶之旅(四)文本输入Widget TextField
Flutter入门进阶之旅(六)Layout Widget
The batch size does not have to be a power of 2!The latest conclusions of senior ML scholars
苹果Meta都在冲的Pancake技术,中国VR团队YVR竟抢先交出产品答卷
Flutter入门进阶之旅(七)GestureDetector
随机推荐
Scala 高阶(七):集合内容汇总(上篇)
十分钟教会你如何使用VitePress搭建及部署个人博客站点
在已打开图片上加水印(文字)
字符串转换整数 (atoi)
国产抗新冠口服药每瓶不超300元/ 我国IPv6网络全面建成/ 谷歌入局折叠屏手机...今日更多新鲜事在此...
JVM之配置介绍(一)
The FFmpeg library is configured and used on win10 (libx264 is not configured)
WeChat Mini Program Payment and Refund Overall Process
FFmpeg在win10上编译安装(配置libx264)
单面线路板与精密多层PCB线路板区别有哪些?
已解决IndentationError: unindent does not match any oute r indentation Level
[HCIP Continuous Update] Principle and Configuration of IS-IS Protocol
用 API Factory 产品生成 API 文档
Intra-group reverse order adjustment of K nodes
数据挖掘-05
使用RecyclerView实现三级折叠列表
水能自发变成“消毒水”,83岁斯坦福教授:揭示冬天容易得流感的部分原因...
Flutter入门进阶之旅(二)Hello Flutter
合并两个有序列表
你没见过的《老友记》镜头,AI给补出来了|ECCV 2022