1. c语言,指针,地址值的传递
对函数myadd(&x,y&)引用就是x,y的地址赋值给指针a,b,故*a表示指针a指向的变量即x的值,*a=x,同理,*b=y。
因为&x,&y表示的是x,y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。
2. c语言二级传地址题
int *p = &m 指针p里存放的是m的地址,然后把指针p指向的地址(也就是m的地址)传到函数f里,因为s是函数f()的形参 ,所以 *s = k是把k的存到形参s指向的地址(也就是m的地址),而 printf("%d,%d",m,*p);中的*p 的含义是取指针p指向的地址里的内容。
3. c语言二级传地址题
我知道你问的意思了。没什么不同,没有“data=”也同样能使data增1,因为在change中操作的是形参指针data指向的对象*data,它已把原调函数中的data的值改变了。所以,如果就这个功能的话,change函数连返回值都不需要,
void change(int *data){
(*data)++;
}
就可以了。你试试……
这里有个问题:change中的data是int *型指针,而main中的data是int型变量。它们俩写得一样但是两个性质不同的变量。
4. c语言地址传递函数例题
指针就是地址,那也就是指针变量作为函数参数的传递喽 。
例:对输人的两个整数按大小输出。
#include<stdio.h>
void main()
{
void swap(int *p1,int *p2);
int a,b.
int *pointer1,*pointer2;
scanf("%d,%d",&a,&b);
pointer1=&a; pointer2=&b;
if(a<b)
swap(pointer1,pointer2);
printf("\n%d,%d\n",a,b);
}
void swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
5. C语言数据结构中地址传递问题。
指针只是内存地址,他需要指针实体才具备数据操作;
而类型定义的变量在C语言是个实体对象,它包含数据在内;
你声明了一个结构指针,却没有结构实体,是不能进行操作的;你的指针不知指到哪里去,运行就死了。
想用指针,应该这样:加个结构实体,指针指向结构实体就可以了。
stacklist Ro,*s;
s=&Ro;
6. 关于c语言形参实参传地址传数值的问题
C语言中函数的参数传递(值传递,地址传递,引用传递)
/* ^_^ 2015年11月3日09:58:03 辨析 C语言中函数的参数传递*/
//值传递 其实质是将数值传递给其他俩个变量,自己变量里面的值并没有改变----所以说是值传递。
# include <stdio.h>
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(x,y); //这就是典型的值传递,它把X,Y的值传递给变a和b;
printf("%d %d\n",x,y); //a,b的值进行交换,但是变量X,Y里面的值并没有交换。
return 0;
}
void exchange(int a,int b)
{
int temp;
temp =a;
a=b;
b=temp;
printf("%d %d\n",a,b);
}
//地址传递 (提到地址二字,应该始终明确,C语言中的地址是基于指针的,所以地址传递是一定会用指针的)
# include <stdio.h>
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(&x,&y); //这就是典型的地址传递,它把X,Y变量地址传递给指针a和b;
printf("%d %d\n",x,y); //*a,*b的值进行交换,就是找到a,b对应的地址交换地址里面的值,其实也就是
//找到 a,b值进行交换。
return 0;
}
void exchange(int *a,int*b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
printf("%d %d\n",*a,*b);
}
7. C语言指针地址传递
首先你要清楚一个点,这里的a,b都是变量名称,举个例子在地址0X0000FFFF处存了一个int型的变量为10,为了方便程序员使用,我们给他命名为a,那么我们在用a的时候其实就是在用那个地址为0X0000FFFF处的变量。
好了回到这里,*py和*px表示的是指针,py和px才是地址。假设a的地址是0X0000FFFF,该地址所存的内容为10,那么这里的px也是-X0000FFFF,而*px表示该地址所存的内容,也就是10.。那么可以很好理解这里其实不是交换地址,而是交换值。
8. 求C语言程序: 参数的“传值”方式与“传地址”方式编程练习
//下面提供一个程序代码供参考
#include<stdio.h>
//计算并联电阻,其中jieguo以引用传递,函数中修改后,直接改变原来的数值;
//r1,r2以数值的方式传递
voidjisuan_bing(double&jieguo,doubler1,doubler2)
{
jieguo=r1*r2/(r1+r2);
}
//计算串联电阻,其中jieguo以地址传递,函数中修改后,直接改变原来变量的数值;
//r1,r2以数值的方式传递
voidjisuan_chuan(double*jieguo,doubler1,doubler2)
{
*jieguo=r1+r2;
}
intmain()
{
doublea,b,bing,chuan;
printf("输入两个电阻阻值,以空格隔开:");
scanf("%f%f",&a,&b);
getchar();//吃掉scanf后输入缓冲区的回车符
jisuan_bing(bing,a,b);//计算并,传bing引用
jisuan_chuan(&chuan,a,b);//计算串,传chuan的地址
printf("并联电阻阻值=%6.2f ",bing);//
printf("串联电阻阻值=%6.2f ",chuan);
getchar();//等用户按回车结束
return0;
}
9. 计算机C语言传值传址的问题。。希望有解析和例题
传值,若在函数中改变了该值,原值不变,因为传进来的是个副本;
传址,若在函数中改变了该值,则原值也变,因为传进来的是地址,则在函数中的操作相当于直接操作该值
10. 请教关于字符串地址传递的C语言题
加2个打印语句,你就明白 p, s 是地址数值。
int fun(char * s)
{char * p=s; //地址传递
printf("%x %x\n",p,s); // 输出地址数值看看
while(*p!=0) p++; // *p 是指针指向的字符(ASCII) 值,p是地址值。
// *p==0 时 字符串结束,0 就是 '\0'.
printf("%x %x\n",p,s); // 输出变化后的地址数值看看,增加数就等于字符串长度
return(p-s);
}
选D, 字符串 “goodbye!”长度 8。