您的位置:首页 > 编程语言 > C语言/C++

C语言第12天 指向变量的指针

2016-08-09 11:33 330 查看
指针:

指针是用来操作地址的

定义:

类型 * 变量名 = NULL;

int *p = NULL;

p用来储存变量的地址

*的含义: 取p这个地址上的数据;

(*p)++和*p++的区别:

(*p)++:p这个地址上的值自加1;

*p++:p这个地址自加一个类型的大小;

int *p在没有初始化就去使用会导致程序崩溃;

5种传参数的换值方法:

方法一:传入数值(无法修改)

void change(int a,int b){
int p = 0;
p = a;
a = b;
b = p;
}
void main(){
int i = 0,j = 0;
scanf("%d,%d",&i,&j);
if(a<b){
change(i,j);
printf("\n%d%d",i,j);
}
}

方法二:传入数值(无法修改)
void change(int a,int b){
int p = 0;
p = a;
a = b;
b = p;
}
void main(){
int i = 0,j = 0;
int *p1 = &i;
int *p2 = &j;
scanf("%d,%d",&i,&j);
if(a<b){
change(*p1,*p2);
printf("\n%d%d",i,j);
}
}

方法三:传入地址 互换地址(无法修改)
void change(int *P1,int *P2){
int c = 0
int *p = &c;
p = P1;
P1 = P2;
P2 = p;
}
void main(){
int i = 0,j = 0;
int *p1 = &i;
int *p2 = &j;
scanf("%d,%d",&i,&j);
if(a<b){
change(p1,p2);
printf("\n%d%d",i,j);
}
}


注: 如果change()函数内的*p直接用 int *p;定义会导致程序崩溃

方法四:传入地址 修改地址上的值(可以修改)

<pre name="code" class="plain">void change(int *P1,int *P2){
int c = 0
int *p = &c;
*p = *P1;
*P1 = *P2;
*P2 = *p;
}
void main(){
int i = 0,j = 0;
int *p1 = &i;
int *p2 = &j;
scanf("%d,%d",&i,&j);
if(a<b){
change(p1,p2);
printf("\n%d%d",i,j);
}
}


方法五:传入地址 修改地址上的值(可以修改)

void change(int *P1,int *P2){
int p = 0;
p = *P1;
*P1 = *P2;
*P2 = p;
}
void main(){
int i = 0,j = 0;
int *p1 = &i;
int *p2 = &j;
scanf("%d,%d",&i,&j);
if(a<b){
change(p1,p2);
printf("\n%d%d",i,j);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: