为什么编译都没问题 运行不了
#include<stdio.h>
void exchange(float a,float b)
{
float *p,*q;
int c;
p=&a;
q=&b;
p=c;p=q;q=c;
a=*p;b=*q;
}
int main()
{
float x,y;
printf("请分别输入两个数\n");
scanf("%f,%f",&x,&y);
exchange(x,y);
printf("%f,%f",x,y);
return 0;
}
#include
int swap(int* m,int* n)
{
int tmp;
tmp=*m;
*m=*n;
return 0;
}
int main()
{
float x,y;
printf("请分别输入两个数\n");
scanf("%f,%f",&x,&y);
exchange(x,y);
printf("%f,%f",x,y);
return 0;
}
运行不了
sorry,swap少些一句==||||||
我要用指针
追答#include
void exchange(float *a,float *b)
{
float c;
c=*a;
*a=*b;
*b=c;
}
int main()
{
float x,y;
printf("请分别输入两个数\n");
scanf("%f%f",&x,&y);
exchange(&x,&y);
printf("%f,%f",x,y);
return 0;
}
程序 没法交换值
追答好了,你再运行一遍,你得看编译器怎么报错的,全角字符是不支持的,也就是说写代码的时候不要开输入法
#include
void exchange(float *a,float *b)
{
float tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
int main()
{
float x,y;
printf("请分别输入两个数\n");
scanf("%f %f",&x,&y);
exchange(&x, &y);
printf("%f,%f",x,y);
return 0;
}
C语言求助指针的移动问题
这几个运算符中,=叫赋值运算符,它的优先级最低,而++的优先级最高,*次之。其实运算结果也不是“先赋值”,是先进行*操作从p指向的地址中取出值来才赋给S的,最后才对p增1。之所以优先级最高的++在最后进行,是由它自身的功能决定的:它写在变量后面,叫后增1运算符。后增1运算符要在它所...
c语言 指针问题 有点看不懂 能帮忙解答一下正确答案中的 每一步运算...
然后定义了一个指针变量 int *p=&t ,指针p指向结构体变量t,要调用结构体中的成员变量,有三种方法;t.成员名(如 t.num)(*p).成员名(如(*p).num)p->成员名(如 p->num)答案为B
c语言指针问题,求解答
A、D定义为:A 定义指向函数的指针pf,所指向的函数参数为空,无返回值 D 定义指向函数的指针pf,函数参数为int,char型(不符题意,题目为int,char*),无返回值 B、D的定义为:定义函数pf,函数参数为空,返回类型为void *(void 型指针)单从函数指针的定义可排除BCD。其次,指针赋值 函数名与...
问两道有关c语言字符指针的问题,请将程序每一步的意思告诉我,谢谢啦...
第一题答案:B。理由:*s与*t都是取出此时地址存储的值,while()语句里面的意思是,当指针s与t都不为空并且s指向的值等于t指向的值。。。当s或者t为空或者t与s指向的值不同时,while()结束,返回此时s指向的值减去t指向的值,所以为比较两个字符串的大小;第二题答案:A。理由:x的地址赋值...
C语言指针问题。
这是一个运算顺序的问题。注意括号的运用。(1) ++(*pointer)是先取值,再自增,当前pointer指向的是位置arr[3],取值后是2,*pointer的结果是2,2再自增,当然会得出3。值得说明的是,这个括号是可以省略的,此处括号只起到增加程序可读性的作用。(2)*(pointer-2)是先移动指针,再取值。
C语言 关于指针的选择 求教高手
①答案是为B ②*p1=*p2;的意思:【p1指向的地址的内存块的值为p2地址指向内存块上的值】③p1=p2;的意思:【p1指向的地址为p2指向的地址】④为了加深你对指针的理解,我们可以这么认为:p1是一张纸条,上面写着房间号,p2也是。p1=p2;是把p1纸条上的房间号擦掉,改成p2纸条上的房间号。p1=*p2...
C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...
C语言指针问题
int *p;这里,定义的是一个指向int变量的指针。它同时也可以用来指向一个int数组。因为在C中,数组的表示是通过元素的首地址来表示的。作为指针,它和int变量指针没区别,编译器无法区分。int (*p)[4],如果你的这里符合语义的话,应该有类似这样的一个声明:int p[3][4]int (*p)[4]其实指向的...
C语言的数组和指针问题,谢谢高手的解答!
总结,问题的关键在于,数组名相当于一个指向于这个数组第一个元素的指针。3)所以,int A[2][3][4]={0};A是一个三维数组,其中A[0]和A[1]都是它的元素,A[0]是第一个元素。所以, A是一个三级指针,指向了这个数组的第一个元素A[0],而A[0]是一3*4的二维数组。而A[0]是一个...
C语言指针问题
假如 P 是指针 那么 *p 就代表变量。 而&a是地址, *p=&a 就是把地址给变量,当然不正确了,因为地址只能给指针。p2,*p1都是变量,变量之间互相赋值是正确的。“原因是被赋值的指针变量前不能再加*说明符”这句话的意思是:如果 给 指针P加上“*”,那么它就变成 了变量,代表的意义...