当前位置:网站首页>一维数组&指针
一维数组&指针
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");
}
边栏推荐
猜你喜欢
在北极都可以穿短袖了,温度飙升至32.5℃
两分钟录音就可秒变语言通!火山语音音色复刻技术如何修炼而成?
新起之秀 DPU,正在掀起数据中心变革!
Scala Advanced (7): Collection Content Summary (Part 1)
非科班AI小哥火了:他没有ML学位,却拿到DeepMind的offer
中科院打脸谷歌:普通电脑追上量子优越性,几小时搞定原本要一万年的计算...
报告:想学AI的学生数量已涨200%,老师都不够用了
Flutter入门进阶之旅(四)文本输入Widget TextField
Rust 入门指南(使用JSON)
ansible-cmdb友好展示ansible收集主机信息
随机推荐
已解决IndentationError: unindent does not match any oute r indentation Level
十分钟教会你如何使用VitePress搭建及部署个人博客站点
Ten minutes to teach you how to use VitePress to build and deploy a personal blog site
Flutter入门进阶之旅(六)Layout Widget
发明时代,「幂集创新」事关你我
FFmpeg compiles and installs on win10 (configure libx264)
曼城推出可检测情绪的智能围巾,把球迷给整迷惑了
注:检测到当前使用的ADB不是HBuilder内置或自定义ADB:PID为:9544进程名称为:adb.exe 路径为:c:\users\administrator\appdata\local\and
基于CAP组件实现补偿事务与幂等性保障
又有大厂员工连续加班倒下/ 百度搜狗取消快照/ 马斯克生父不为他骄傲...今日更多新鲜事在此...
金融业“限薪令”出台/ 软银出售过半阿里持仓/ DeepMind新实验室成立... 今日更多新鲜事在此...
Flutter入门进阶之旅(四)文本输入Widget TextField
史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!...
ABP 6.0.0-rc.1的新特性
透明tune proxy
Report: The number of students who want to learn AI has increased by 200%, and there are not enough teachers
Use RecyclerView to implement three-level collapsed list
两个链表相加
Rust从入门到精通04-数据类型
26. Pipeline parameter substitution command xargs