1int *m=&a,*n=&b的写法错在哪里。
2同样的代码cfree5运行结果和vscode运行结果不一样。
3对于本人写的代码求指教。
4想看高级点的代码,看看大lao的代码咋写的,学习学习。
#include
void swap(int *p,int *q)//交换函数
{
int t;
t=*p;
*p=*q;
*q=t;
}
int main()
{
int a, b;
int * m=NULL, * n=NULL; //int *m=&a,*n=&b的写法错在哪里。
m = &a, n= &b;
a = 1;
b = 2;
printf("%d %d\n", a, b);
printf("%d %d\n", *m, *n);
swap(*m, *n);//或swap(&a,&b);
printf("%d %d\n", a, b);//变量的直接输出
printf("%d %d\n", *m, *n);//变量的间接访问
return 0;
}
1.int *m=&a, *n=&b; 这段语句是没有问题的。
2.整个程序应该是有问题的,swap(*m,*n);需要修改为swap(m,n);
因为swap定义的形式参量是指针类型,因此传递进来的必须为指针类型或地址。
以下为修改后的代码,希望对你有用。
#include<stdio.h>
void swap(int *p,int *q)//交换函数
{
int t;
t=*p;
*p=*q;
*q=t;
}
int main()
{
int a, b;
int *m=&a, *n=&b; //int *m=&a,*n=&b的写法错在哪里。
// m = &a, n= &b;
a = 1;
b = 2;
printf("%d %d\n", a, b);
printf("%d %d\n", *m, *n);
swap(m, n);//或swap(&a,&b);
printf("%d %d\n", a, b);//变量的直接输出
printf("%d %d\n", *m, *n);//变量的间接访问
return 0;
}
供参考:
#include<stdio.h>
void swap(int *p,int *q)//交换函数
{
int t;
t=*p;
*p=*q;
*q=t;
}
int main()
{
int a, b;
//int * m=NULL, * n=NULL;
int *m=&a,*n=&b; //的写法错在哪里。这么写没任何问题。
//m = &a, n= &b;
a = 1;
b = 2;
printf("%d %d\n", a, b);
printf("%d %d\n", *m, *n);
//swap(*m,*n);这么写是错误的,应改为:
swap(m, n);
//或 swap(&a,&b);
printf("%d %d\n", a, b);//变量的直接输出
printf("%d %d\n", *m, *n);//变量的间接访问
return 0;
}
第一点,变量初始化必须要用常量,而不是变量,它必须是一个确定的值,由于程序未运行,所以变量a.b的地址是未知的,你不能用他们去初始化别的变量,第二点,如果两种编译器的结果不一样,那很可能结果是错的,而且输出的结果比较随机,swap调用时应该传入指针,而不是传值,你传的是值。
不知道你这个问题是否已经解决, 如果还没有解决的话: