采用指针变量作为形参

作者&投稿:钦邰 (若有异议请与网页底部的电邮联系)

函数调用时,若形参是一个指针变量,而对应的实参是一个数组名,则函数参...
在这种情况下,函数的参数将是指向数组首元素的指针。在许多编程语言中,数组名作为参数传递给函数时会自动转换为指向数组首元素的指针。这意味着,在函数内部,你可以通过指针来访问数组中的元素,就像普通的指针一样。

为什么利用指针时,定义函数要用*,而调用函数时要用&
你可以这么理解:指针定义完后即定义了一个指向某个地址的变量,这种变量只能存放地址信息,C语言用"*"来跟其它一般的变量进行区分,只是当你定义这个变量时这个地址还未确定,因此,当你将指针作为形参时,只需要帮它指向一个确定的地址,那么指针就可以正确的取到所需要的数。而“&”就是这个功能,取...

C语言如果用指针去使用变量,和直接使用变量有什么不同。
对数组来说,a[0]和*a具有相同效果,a[0]相当于地址指针,一般来说速度是相对快一些的。因为引用其他变量时也是先找到地址来使用。用指针来使用变量时,作实参,则修改形参能达到修改实参的作用。直接用变量则不具有此效果。因为指针作实参传递的是地址。

求指针函数的使用!!
1.函数指针定义 函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:int (*f)(int x);double (*ptr)(double x);在定义函数指针时请注意:函...

关于c语言 当实参是数组名 形参是指针变量时
在C语言,数组无论作为参数还是返回值,都是以指针形式返回或者传递的。在数组中,数组名字代表的是数组第1个元素的地址。比如如下数组。int a[10]= {1,2,3,4,5,6};数组名a,实际上相当于&a[0]。所以,当实参是数组名,形参是指针变量时,只要保证数据类型一致即可传递。如下面的示例代码:inc...

C++中使用指针、引用进行参数传递
指针存放对象的地址。在你的例子中,swap中的ab和main中的ab的关系式,swap是mian中ab的地址。想想一下,mian中的ab地址为AB,在swap中我们说吧A地址的家伙变为100,B地址的变为1000.请问mian中变了没有?当然会变!!这个问题关键是理解第一个部分,swap中的ab和mian中的ab是独立的四个变量 ...

指针的作用是什么啊?
但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。第三,有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,...

求c语言大神帮忙
1、选B,单向值传递;数量变量型形参,接收对象为 数值,它只能接收,不能反馈;指针变量型形参,接收对象为地址,因为它直接面对物理地址,修改内容,就是直接修改实际值,所以它既是接收,也是反馈。2、选D,二义性,说的是,在使用(调用)这个定义时,不会产生与宏定义本意不同的编程结果。正确的...

关于c语言数组的一些疑惑?
数组元素不能做形参,这个论述是正确的。我们都知道,单个元素可以做形参,数组也可以做形参。但是,二者有本质上的区别。单个元素做形参,是建立一个变量副本,程序运行时,实参把值传给副本,就没有实参的什么事了,后面对副本的赋值、改写,都不会影响实参。而数组做形参时,只是把实参的首地址传给...

...要求:第一种方式实参用数组名,形参用指针变量;第二种方式实参与形参...
\/ 这是实参用数组名,形参用指针变量的方式 \/ void fun1(int *p, int n) { int temp;for(int i=0,j=n-1; i<n\/2; i++, j--) { temp = p[i];p[i] = p[j];p[j] = temp;} } \/ 这是实参与形参均为指针变量的方式 \/ void fun2(int *p, int n) { int temp;int ...

叔哄15926852138问: C语言.,..编程..题目:采用指针形变量作为形参,编写一个实现两个整数交换的函数.在主函数中输入 -
金沙县苏爽回答: #include void swap(int *a,int *b) {int t;t = *a;*a = *b;*b = t; } void main () {int a,b,c;scanf("%d%d%d",&a,&b,&c);if(a swap(&a,&b);if(a < c)swap(&a,&c);if(b < c)swap(&b,&c);printf("从小到大:%d,%d,%d\n",a,b,c);}

叔哄15926852138问: c语言中指针作为形参,代码如下: -
金沙县苏爽回答: 你要用*去解引用,这样才能改变指针指向内存的值. 你的swap函数写的有问题,正确的写法有人给了. 至于为什么*x,*y的值没有改变,因为你交换的是2个形参的值,虽然你传入的是指针,但是你没有把它们当成指针来用,最后的结果跟传非指针值是一样的. 如果想真正改变实参的值,就必须交换指针指向的内存,而不是单纯交换指针变量本身.形参是通过堆栈传递的,只有用类似 *x = 1;这样的语句操作指针指向的内存,才能影响到实参,否则实参的值是不会改变的. 其实最好的方式就是去VS里调试运行,仔细观察运行过程,就能比较清晰地了解指针.单纯的理论是站不住脚的,拉出来溜溜就一清二楚了. 想对你能有帮助.

叔哄15926852138问: 指针作为函数形参 -
金沙县苏爽回答: 我给出一个和大家不一样的答案,用指针作为函数的形参,其实形参值改变,实参值是不改变的.你们所说的改变并不是正真意义上的实参值改变了.那么我请问void fun(int *p);这个函数原型形参是什么!形参实际上是p,p是调用函数的一份拷贝,p改变了调用的实参是不会改变的.那么传值的时候改变的是什么呢?改变的是*p.因为p是一份指针拷贝,p与实参指针保存同一块地址,当改变*p时对应的实参指针指向的内容改变了.

叔哄15926852138问: 判断:指针变量只可以是函数的形参,不可以为函数的实参 -
金沙县苏爽回答: 额,你这个问题是这样的么?void fun(int x) {....} 调用时,你是 int *p;fun(p);//用指针变量来做形参 这是不对的,因为编译器虽然弱智,但是他能分清楚类型啊.你这样相当于耍了编译器,他会报错的,通不过去.你就把编译器看成是很傻很天真...

叔哄15926852138问: 关于指针变量做形参 -
金沙县苏爽回答: 数组在内存中是连续存放的,a为首地址,a[1]也就是指向首地址的下一个地址么.a[j++]也就是指向距离首地址j++个地址的元素么.这就是用角标操作数组

叔哄15926852138问: 指针变量作为形参时,改变形参的值,会改变实参的值吗?如果不会,是为什么? -
金沙县苏爽回答: 1.会改变实参的值. 2.必须传指针去形参,不能采用普通的按值拷贝的方法.就是必须传地址,而不是传值拷贝到形参.否则就不会成功.

叔哄15926852138问: 指针作为函数形参时是哪种传递方式 -
金沙县苏爽回答: C中的概念是函数参数为单向传递方式:由实参传给实参.另外,要知道形参和形参值(实参)占用不同的内存单元.在可以改变指针指向的值(通过解地址),那么指针本身的值(变量地址)就不能改变--指针明显是变量,单向传递是永恒规则.是的,在调用函数内要改变指针类型的参数值可以声明一个二级指针(指向指针的指针类型)做到.应该区分清楚'指针'这个词用在上下文的语义,p是地址、是地址变量,*p是指针、是指针指向的变量的值.**p是指针指向的变量(为指针类型的变量).指针影响代码可读性.

叔哄15926852138问: 怎么使函数形参用指针变量 -
金沙县苏爽回答: char str[20]; printf("input string: "); scanf("%s",str); len=length(str); 数组str作为参数的时候自动退化成指针了.

叔哄15926852138问: 指针变量能不能做到值传递给形参?懂的请进吧! -
金沙县苏爽回答: 指针传递的是地址,例如 #include<stdio.h> void main() { void aaa(int *p1,int *p2);int a=1,b=2;int *p1=&a;int *p2=&b;if(a<b) aaa(p1,p2);printf("%d,%d"a,b); } void aaa(int *p1,int *p2) //比较函数 { int t;t=*p1;*p1=*p2;*p2=temp; } 这样就将a,...


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网