1. 在c语言中整形变量的指针能否赋值给整形变量
*p1
这并不是指针。。。而是指针所指向的值,temp=*p1即把这个指针所指向的值赋值给一个临时变量
都是同一类型;
指针变量的值是指针,指针就是地址;指针变量指向的变量就不是地址了,而是一个具体的变量。
如:int
*ptr;
ptr才是指针,即ptr为指针变量
其实是一个地址,*ptr为指针变量的值,而且指针的类型是int
*
2. C语言关于值传递与地址传递的问题
编程中,很多东西要你自己去摸索,才能真正的理解。关于地址与值的问题,其实你自己可以试,把变量的地址输出来看看看是不是一样,比如 printf("%x",&a); 这样就是以把变量a的地址用16进制的方式输出来,看看地址到底是怎么一回事。
传值与传地址可以这样理解:
就像我把我写的作文抄了一份给你,你拿去看了之后把有的地方改了,现在我要交作文,而我有一份,所以我直接交了,我交的作文内容并没有变,这就是传值,即值传递。
同理,如果我把我的作文直接给你,你看了后也把有些地方改了,现在我也要交,你只能还给我,我再交,这时我交的就是被你改过的了,这就是传地址,即引用传递。
这只是我的理解,有误的地方还请指正。
3. 关于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);
}
4. 求C语言中TEMP的用法
temp是一个零时变量。用以num1及num2值的交换用的。
main()
{
int
num1,num2,num3,temp;
//定义num1,num2,num3,temp
4个变量为整形
printf("please
input
three
numbers:");
//输出
Please
input
three
numbers
scanf("%d,%d,%d",&num1,&num2,&num3);
//读取用户输入的数值,并且依次赋值给num1,num2,num3
if(num1>num2)
//判断num1是否大于num2,如果成立则执行下列动作
{
temp=num1;
//令temp的值与num1相同
num1=num2;
//令num1的值与num2相同
num2=temp;
//令num2的值与temp相同
}
if(num2>num3)
//判断num2是否大于num3,若成立则执行下列动作
{
temp=num2;
//令temp的值与num2相同
num2=num3;
//令num2的值与num3相同
num3=temp;
//令num3与temp的值相同
}
if(num1>num2)
//判断num1是否大于num2,若成立则执行下列语句
{
temp=num1;
//令temp与num1值相同
num1=num2;
//令num1与num2值相同
num2=temp;
//令num2与temp值相同
}
printf("Three
numbers
afer
sorted:%d,%d,%d\n",num1,num2,num3);
//输出结果
}
也就是说,temp在这段程序里面仅仅只是起到一个中转的作用。举个例子:您有杯子A和杯子B,各自装满了不同的溶液,您现在要把杯子A中的溶液与杯子B中的溶液交换,这时您就需要一个空杯子C来做中转。而这个空杯子就是您程序中的temp。
temp可以命名成不同的。只要您愿意。比如,您可以命名成tem。都一样。
5. 地址可以赋值给地址吗C语言
可以的
指针类型 就是做这个的
而且 不管是什么样的地址 在C语言中 都是一个整型值
所以 地址赋值给整型变量都是可以的。