指针||数组&&函数
Posted sird-b
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针||数组&&函数相关的知识,希望对你有一定的参考价值。
1.声明指针:typename *ptrname; int * p_rate;
2.初始化指针:p_rate= &rate ; 使用&运算符将变量的地址存储到指针中
3.使用指针:*p_rate
------------------------------------------------分隔符----------------------------------------------------
#include<stdio.h>
#define SIZE 4 //把SIZE换成4
int main(void)
{
short dates[SIZE];//定义数组
short * pti;//声明指针
int **pti;//指针的指针
short index;//定义变量
double bills[SIZE];//定义数组
double * ptf; // 声明指针
pti = dates;//把数组地址赋指针
ptf = bills;
printf("%23s %15s
", "short", "double");//输出
for(index = 0;index < SIZE; index++)
printf("pointers + %d; %10p %10p
", index, pti + index, ptf + index);
return 0;
}
------------------------------------------------分隔符----------------------------------------------------
指针的算术运算:指针+1是增加一个“存储单元”;对于数组(short dates[SIZE])而言+1(dates+1)是下一个元素的地址
指针数组:dates + 2 == &dates[2] //相同的地址,dates首元素代表着数组dates[]的地址,所以dates+2代表着dates[2]的地址,其中&dates[SIZE]代表整数的地址;
*(dates + 2) == dates[2] //相同的值(指针和数组名可以相互表示),*(dates + 2)代表整数值,另外“*”优先级高于“+”,否则*dates+2代表第一个元素的值加2;
------------------------------------------------分隔符----------------------------------------------------
数组名是该数组首元素的地址,int dates[]==int * dates,都是dates指向int的指针。
源码:
//编写一个处理数组的函数,该函数返回数组中所有元素之和,
#include<stdio.h>
#define SIZE 10
int sum(int ar[],int n);//只有在函数原型或函数定义头中,才可以用int ar[]代替int * ar
int main(void)
{
int marbles[SIZE] = {20,10,5,39,4,16,19,26,31,20};
long answer;
answer = sum(marbles, SIZE);//marbles代表首元素地址引用传递给sum函数形参指针ar,
printf("The total number of marbles is %ld.
", answer);
printf("The size of marbles is %zd bytes.
",
sizeof marbles);
return 0;
}
int sum(int ar[], int n)//这个数组大小是?
{
int i;
int total = 0;
for(i = 0;i < n; i++)
total += ar[i];
printf("The size of ar is %zd bytes.
",sizeof ar);
return total;
}
(ps)函数实参与形参之间的数据传递有两种:
值传递:数据传递方式有值传递和引用传递,值传递:传值,实际是把实抄参的值赋值给行袭参,相当于copy。
引用传递: 实际是传值的一种特殊方式,只是他传递的是地址,不是普通的赋值,那么传地址以后,实参和行参都指向同一个对百象,因此对形参的修改会影响到实参。
以上是关于指针||数组&&函数的主要内容,如果未能解决你的问题,请参考以下文章