C语言指针变量的赋值和做函数的参数
发布网友
发布时间:2022-05-02 13:00
我来回答
共4个回答
热心网友
时间:2022-06-20 04:20
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:
int x ;
int * px=&x ; //定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x ;
int * py ;
py=&x ; //单独赋值,将py指向x
*py=10 ; //这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错! *py就是x,这里相当于x=10;
2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:
#include <stdio.h>
void func( int a, int b, int *pmax )
{
if ( a>b ) *pmax=a;
else *pmax=b ;
}
void main()
{
int a=2,b=3,max=0;
func(a,b,&max ); //这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。
printf("max=%d\n", max );
}
热心网友
时间:2022-06-20 04:21
左边的GetMax函数返回一个int类型的max
右边的GetMax函数没有返回值,函数参数是int类型的变量a,b,c和指向int类型变量的指针变量m
在调用GetMax函数时,函数参数中的max是指针变量,调用指针都要加上&表示调用的是指针地址。你这样记好了,如果遇到指针,定义函数的参数中要加*,调用函数的参数中要加&,一般都是这个规律。追问嗯!我的意思是*pi=&i和px=&x吧,右边都是&加一个字母,为什么左边一个有*一个没有。你能解释一下*pi是指的什么,&i、px又是指的什么么?麻烦(此处是小白一只==
热心网友
时间:2022-06-20 04:21
左边传的是数值。这样传过去,max这个变量自己的值不会出现变化。靠return来返回运算结果。想应的你要用返回值,也要用东西来接着他。
右边传过去的是max的地址。根据计算结果会改变max的值。直接输入地址我没试过。不建议人脑来指定内存地址,毕竟你不知道你指定的这组数字代表的内存现在装了些什么。
热心网友
时间:2022-06-20 04:22
是一样的,*pi=&i只是在定义的时候把 i 的地址给 pi指针(px指向x的地址)。“为什么右边同样是地址,左边不相等呢?”这段不知道什么意思?
它们的区别是 左边是利用返回值来读函数,而右边是利用函数调用, 因为只有只有指针才能修改地址的值,要传个地址给它,调用函数中的max要取 *,获取它的值。追问嗯!我的意思是*pi=&i和px=&x吧,右边都是&加一个字母,为什么左边一个有*一个没有。你能解释一下*pi是指的什么,&i、px又是指的什么么?麻烦(此处是小白一只==
C语言指针变量的赋值和做函数的参数
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:int x ;int * px=&x ; //定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x ;int * py ;py=&x ; //单独赋值,将py指向x*py=10 ; //这里的*,是引用指针中的数...
用vlookup双重条件取值
在Excel中,使用`VLOOKUP`函数进行单一条件查找非常常见,但`VLOOKUP`本身并不直接支持双重条件。然而,你可以通过一些间接方法实现。一种方法是将两个条件合并为一个标识符(例如,通过连接或串联),然后在另一个区域中查找此标识符的对应值。这通常涉及到辅助列或辅助表,这些列或表将两个条件合并为一个可以在`VLOOKUP`中搜索的单一值。另一种方法是使用其他函数(如`INDE电商平台`和`MATCH`组合)来实现更复杂的查找逻辑,这允许你基于多个条件检索数据。仅需3步!不写公式自动完成Excel vlookup表格匹配!Excel在线免,vlookup工具,点击8步自动完成表格匹配,无需手写公式,免费使用!
c语言指针赋值德问题
函数调用inv(a,10,&max,&min);就是将数组a的首地址取出来赋值给临时变量x,10赋值给n,(主程序中的变量)max的地址赋值给(参数临时变量)max,(主程序中的变量)min的地址赋值给(参数临时变量)min。由于参数的临时性,去直接修改参数变量的值,无法实现将修改后的值返回给调用者,只能利用指针型变量...
c语言中如何把函数赋值给一个变量
在C语言中,可以使用函数指针来将函数赋值给一个变量。函数指针是一个指针变量,它指向函数的地址,可以通过将函数名作为参数传递给指针变量来实现赋值。例如,如果要将函数add()赋值给变量p,可以使用函数指针int (*p)() = add;。这个语句声明了一个指向函数的指针变量p,它的返回类型为int,参数列表...
c语言 指针如何赋值
1、变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。2、为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”。3、定义指针变量.对...
C++指针、数组、引用、变量作函数参数的问题
1, 变量作为参数,这是单向值传递。即将数据传给被调函数后,与调用函数就不相关了,必须通过函数值返回操作结果。如有函数声明:void swap(int a,int b); //功能是交换a,b值,但事实上对调用函数没有影响,因为swap函数的局部变量a,b在该函数执行完释放掉了,其值也就丢失了。2. 指针、数组...
C语言中指针变量作为函数参数和一般变量作为函数参数的区别
一般变量作为形参,是不能改变实参值的哦,要返回数据就用return;指针指向真实的地址,不重新分配内存,所以调用函数后,如果函数里改变了指针指向的值,那这个数就真的变了。调用就是用函数名,还要传送相应的调用参数。
在C语言中能否直接给指针指向的数据赋值?为什么?
可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。这样才可以:int a,*p=&a;*p=7;实际上就是使a等于了7。
C语言如何把指针指向的值赋值到变量上。。。
要将指针指向的值赋值到变量上, 需要将指针指向的值取出,然后执行赋值操作。对指针取值需要使用取值运算符*,这个符号和乘相同,但功能不同。用于取值时,*为单目运算,与后续的指针相结合,实现取指针指向的值的效果。比如 int a = 10;int b;int *p = &a;这时p指向变量a的地址,指向的值为10...
c语言求解 指针变量作为函数参数为什么用void 定义而且不用返回值就能...
*p这个是取p指针保存的地址里面的值,更改的也是保持的地址里面的值。而函数中传递的是变量的拷贝,比如指针传递的就是他保存的地址 如果在函数中对他保存的地址改掉,那么是不影响主函数中的变量的 错误的原因是scanf中是用英文的逗号,而你输入的是中文的逗号,切换输入法就可以了。
C语言中用函数做函数的形式参数的问题
因此可以用一个指针变量来指向这个这个函数名,这样就相当于指向这个函数了。所以下面的max,min,add函数都是一个地址,分别调用时就是赋值p=max,p=min,p=add,也就是(*p)(x,y)分别就等于max(x,y),min(x,y),add(x,y).程序在win-tc和Dev-c++下调试通过。include <stdio.h> include <conio...