C 语言 指针#includestdio.hint a1,b2int *i,*ji&aj&bvoid change(int *i,int *j){int tt*i*
C 语言 指针
#include<stdio.h>
int a=1,b=2;
int *i,*j;
i=&a;
j=&b;
void change(int *i,int *j)
{int t;
t=*i;
*i=*j;
*j=t;
}
int main()
{
change(i,j);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
为什么编译不过去
[解决办法]
i=&a;
j=&b;
[解决办法]
这两句需要写在函数体里面
[解决办法]i=&a;
j=&b;
这两句是对指针的赋值语句,必须在函数体内才能运行。
变量定义可以在函数体外面,作为全局变量定义。
[解决办法]++
[解决办法]是这样的
[解决办法]#include<stdio.h>
int a=1, b=2;
int *i = &a;
int *j = &b;
void change(int *i, int *j)
{
int t;
t=*i;
*i=*j;
*j=t;
}
int main()
{
change(i,j);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
[解决办法]或者
#include<stdio.h>
int a=1, b=2;
int *i, *j;
void change(int *i, int *j)
{
int t;
t=*i;
*i=*j;
*j=t;
}
int main()
{
i = &a;
j = &b;
change(i,j);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
int *i = &a; C语言允许定义变量的同时进行初始化---第一种方案
int *i, *j;定义全局变量,在main函数中进行赋值,因为i = &a;属于C语句,只能在函数体内执行
[解决办法]#include<stdio.h>
void change(int *i,int *j)
{ int t;
t=*i;
*i=*j;
*j=t;
}
int main()
{
int a=1,b=2;
int *i,*j;
i=&a;
j=&b;
change(i,j);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
[解决办法]#include<stdio.h>
void change1(int *i,int *j)
{
int t;
t=*i;
*i=*j;
*j=t;
}
void change2(int *i,int *j)
{
int *t;
t=i;
i=j;
j=t;
printf("%d %d\n",*i,*j);
}
int main()
{
int a=1,b=2;
int *i,*j;
i=&a;
j=&b;
change1(i,j);
printf("%d %d\n",a,b);
a=1;
b=2;
i=&a;
j=&b;
change2(i,j);
return 0;
}
[解决办法]
#include<stdio.h>
int a=1,b=2;
void change(int *i,int *j)
{
i=&a;
j=&b;
}
int main()
{
int i=5,j=10;
change(&i,&j);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
[解决办法]
在函数体外只能定义变量或是初始化,不能有赋值语句。
[解决办法]
好像是这样