成都创新互联网站制作重庆分公司

c语言指针函数如何传参数,C语言指针传参

C语言 指针 传参

问题在你这个函数的定义参数void find(float a[],float *pmax,float *pmin)

我们提供的服务有:网站设计、成都做网站、微信公众号开发、网站优化、网站认证、镇远ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的镇远网站制作公司

你在函数内对后2个参数直接进行了赋值。

{pmax=a[t];}

if(a[t]*pmin)

{pmin=a[t];}

你在函数内赋值并不会被外部的参数造成影响,你需要把用指针的引用才行

float* pMax, float* pmin

这样在函数内的赋值才有效果

c语言中指针传参

因为数组的每一个元素在内存中是连续存放的,只要传递数据的首地址,你就可以根据对指针的"++"或--"操作,或直接在首地址上加上某个数,来得到数据其他的元素地址,然后用"*"操作符可以访问对应地址存放的数值。

比如,有如下这样语句:

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // 定义数组a

int *p = a; // 使指针p指向数据的首地址,类似给函数传递首地址

1、使用"++"操作符,p目前指向的是数组首地址,那么p++之后,p就应该指向存放数组第二个元素的地址,这样就可以用*p得到第二个元素的值(2)。依此类推。

2、可以直接对首地址加某一个数,比如p+4,因为p指向数组首地址,所以p+4就是指向存放数据第五个元素的地址。这样就可以用*(p+4)得到第五个元素的值(5)。其实这里的*(p+4)与p[4]效果是一样的,只是写法上的不同而已,但是p[4]更直观一些,所以大部分编程人员都愿意用p[4]这种形式,因为它看其来像个数组,更好理解一些。

总而言之,用数组首地址可以访问数组的所有元素,就是因为可以通过对首地址的相加减来得到其他元素的地址,从而可以得到数组的每一个元素值。

这样说,你明白了吧。

如果还不太明白,那就看看谭浩强的《C语言程序设计》的“数组与指针”篇,那里写的很详细的(P210)

C语言使用数组指针参数传递

用指针传递一维数组。

#include stdio.h

#include math.h

float dist( float *p1, float *p2){

float d[3],ds;

int i;

for (i=0;i3;i++) d[i] = p2[i]-p1[i];

ds = sqrt( d[0]*d[0]+ d[1]*d[1]+d[2]*d[2]);

return ds;

};

void vec( float *p1, float *p2, float *p3){

int i;

for (i=0;i3;i++) p3[i]=p1[i]+p2[i];

}

int main()

{

float a[3],b[3],c[3];

int i;

printf("input x y z for point 1\n");

for (i=0;i3;i++)scanf("%f",a[i]);

printf("input x y z for point 2\n");

for (i=0;i3;i++)scanf("%f",b[i]);

printf("distence: %g\n", dist(a,b));

printf("\n");

vec(a,b,c);

for (i=0;i3;i++) printf("%g ",c[i]);

return 0;

}

在C语言中,定义一个函数的形参和实参之间具体是如何进行参数传递的?

函数中的形参和调用时的实参都是数组名时,传递方式为(

地址传递

此时形参和实参共用同一段内存

都是变量时,传递方式为(

值传递

实参与形参互不影响

C语言函数参数传出怎么用

struct Student st;

void function(struct Student st);这种形式就是传递地址;

void fuction2(struct Student * pst);这种形式就是传递结构体的地址;

调用这两个函数的形式如下:

function(st);

fuction2(st);

一般推荐第二种方式,因为第一种方式需要传递整个结构体,需要开辟sizeof(struct student)这么大的内存空间,开销太大,第二种方式则只需要开辟四个字节的内存,用来存放地址;


当前标题:c语言指针函数如何传参数,C语言指针传参
分享URL:http://cxhlcq.com/article/dsschjp.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部