c语言中指针函数参数传递 c++ 指针作为参数传递

C语言中文件指针能不能作为参数传递?

1.指针完全可以作为函数的参数进行传递,其实在C中,数组作为参数传递,跟指针作为参数传递都很类似的,指针传的是该指针指向的地址,而数组参数则是将该数组的首地址传递过去。

台儿网站建设公司成都创新互联,台儿网站设计制作,有大型网站制作公司丰富经验。已为台儿数千家提供企业网站建设服务。企业网站搭建\成都外贸网站建设要多少钱,请找那个售后服务好的台儿做网站的公司定做!

2.文件指针

在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作。定义说明文件指针的一般形式为:

FILE *指针变量标识符;

其中FILE应为大写,它实际上是由系统定义的一个结构,该结构中含有文件名、文件状态和文件当前位置等信息。在编写源程序时不必关心FILE结构的细节。在使用文件时,需要在内存中为其分配空间,用来存放文件的基本信息,给结构体类型是由系统定义的,C语言规定该类型为FILE型,其声明如下:

typedef struct

{

short level;

unsigned flags;

char fd;

unsigned char hold;

short bsize;

unsigned char *buffer;

unsigned ar *curp;

unsigned istemp;

short token;

}FILE;

3.例如:

FILE *fp;

表示fp是指向FILE结构的指针变量,通过fp即可找存放某个文件信息的结构变量,然后按结构变量提供的信息找到该文件,实施对文件的操作。习惯上也把fp称为文件指针。

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语言中

指针做函数参数传递二维数组有两种基本方法:

1、传递“数组指针”

#include stdio.h

void output( int (*pa)[3], int n )//这个函数只能输出n行3列的二维数组

{

int i,j;

for( i=0;in;i++ ){

for( j=0;j3;j++ )

printf("%d ", pa[i][j] );

printf("\n");

}

}

void main()

{

int a[2][3]={

{1,2,3},

{4,5,6}

};

output(a,2);

}

2、传递“指针数组”

先将二维数组的行指针存储到一个指针数组中,再将指针数组传递到子函数中去。

#include stdio.h

void output( int *pa[], int row,int col ) //这个函数更通用,但调用前,要做好准备工作。

{

int i,j;

for( i=0;irow;i++ ){

for( j=0;jcol;j++ )

printf("%d ", pa[i][j] );

printf("\n");

}

}

void main()

{

int a[2][3]={

{1,2,3},

{4,5,6}

};

int i;

int *pa[2];

for( i=0;i2;i++ )

pa[i]=a[i];

output(pa, 2, 3);

}

C语言用指针传递参数的问题

指针传递参数实例:

void fun1( int *p ) //此函数接受一个指针p,也就是说p是别人传过来的一个int类型的地址

{

printf(" %d", p);  ///打印p的值,注意p是地址,所以打印的是一个内存地址

printf("%d", *p); ///打印指针p所指向的内存单元的值,那要看p是谁传过来的,它以前值是多少?

*p = 0;  ///把p所指向的内存单元赋值为0

}

main()

{

int a  = 90;  ///定义一个整形变量,存放90

fun1( a) ;  //调用fun1函数,并把变量a的地址传递过去

//注意,a刚开始存放的是90,执行完后a内容就变成0了

}

希望能帮到你,望采纳哈!

在c语言中,指针作为函数参数,形参只能传递值,而不能传递地址,是怎么回事?

C语言中,函数参数只能传值。与传值对应的是传引用,C语言不支持函数参数传引用,C++语言才支持。

C++传引用函数:

void foo(int a) { a = 3; }

假如a = 2,执行foo(a)后,a = 3。

---

C语言可以模拟传引用,方法是通过指针来实现:

void foo2(int* ap) { *ap = 3; }

假如a = 2,执行foo2(a)后,a = 3

foo2(a)调用本质上仍然是传值,只不过传递的是指针,指针即是地址,地址本质上是一个无符号整数。

如果:

void foo3(int b) { b = 3; }

假如a = 2,执行foo3(a)后,a = 2。这是因为foo3(a)调用过程中,a值传给形参b,修改b的值与实参a无关。

注意到,foo3(a)与上述foo(a)传引用的调用是形式一样的。

既然C语言通过指针可以实现传引用调用,为什么C++还要引入引用这个特性呢?这是因为C++引入的很多新特性需借助引用来实现,比如,拷贝构造函数等等。

C语言 指针 传参

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

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

{pmax=a[t];}

if(a[t]*pmin)

{pmin=a[t];}

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

float* pMax, float* pmin

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


本文标题:c语言中指针函数参数传递 c++ 指针作为参数传递
地址分享:http://scyanting.com/article/hhcdgd.html