使用第三个变量,将函数里面两个变量的值交换了一下。如果传a,b的地址,就能交换a,b的值。
输出:a=2,b=3
%d表示输出一个10进制数。
还是2和3,因为函数参数不是指针,要看到效果,可以用指针
#include <stdio.h>
void swap(int * a, int * b)
{
int t = *a; *a = *b; *b = t;
}
int main()
{
int a = 2, b = 3;
swap(&a, &b);
printf("a=%d, b=%d", a, b);
return 0;
}
```c
#include<stdio.h>
void swap(int p, int q)
//p和q叫做形参,用于接受相应的参数。p和q在接受实际参数a,b的值后,
//整个函数都只是在对p和q的值进行修改,而不涉及a,b。所以a和b的值并没有发生改变
//如果要想改变a和b的值的话,你需要掌握指针以及变量的作用域的相关知识,具体代码可以看上面那位大佬的。
{
int t;
t = p;
p = q;
q = t;
}
int main(void)
{
int a = 2, b = 3;
swap(a, b);//这里调用了swap函数,将a,b的值分别赋给p和q。我们把a和b叫做这个函数的实际参数。
printf("a=%d,b=%d\n", a, b);
return 0;
}
```
不知道你这个问题是否已经解决, 如果还没有解决的话:测试是否是编译器不支持中文的输出而造成的乱码,可使用 printf(“你好!”);这样的直接输出中文的语句测试。
如果也出现乱码,就要去调试系统编码和编译器编码之间的统一的,如果是采用的codeblocks集成开发环境,详细可参考:
如果你的文件是文本文件(.txt),可以直接使用记事本查看内容是否存在,是否正确。
查看你写函数的操作是否有误,一般来说,不可以自己手动打开文件进行写操作,要使用文件写的函数如(fputs();fscanf();fwrite();)等函数将信息写入文件,再用相对的文件读取出数据如(fgetc();fprintf();fread();)等。
数据读出写入都使用一定的格式处理就不容易出问题,随便使用,可能会导致某个数据块多一个空格等多余数据,那么使用函数读出的时候,就会出现把这个数据块后面一个数据块取出的时候空格就会占一个位置就会导致后面数据都对不上号的问题。由此就出问题了,我们可以选择把文件刷新,重新严格写入新数据,再读出看看。
查看自己的写入数据一块的函数是否在写完数据之后没有关闭文件。
没有关闭文件的话,刚刚写入的数据并没有进入文件,而是暂时存在缓冲区内,那么文件中没有数据,当然会输出乱七八糟的东西。这也是很多初学者曾经会犯的错误,因此括号一次性打,文件函数打开关闭一起写,也是一个好的习惯。
检查自己的文件打开方式是否有误,如果是文本文件,打开方式可不加b,是二进制文件的话,必须加b.如下
FILE *fp1,*fp2;
fp1=fopen("D:\\file\\ff.txt","r+");//"+"表示可读可写
fp2=fopen("D:\\file\\cc.dat","rb+");
个人经验有限,欢迎其他同学和大佬补充,相互学习~