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);
}
}
方法三:传入地址 互换地址(无法修改)
注: 如果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);
}
}
指针是用来操作地址的
定义:
类型 * 变量名 = 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);
}
}
相关文章推荐
- C语言int类型指针指向char类型变量简单实例
- c语言中返回指向临时变量的指针的探讨
- c语言中定义结构体指针并指向一片内存空间和直接定义一个结构体变量的区别 Node *p=(Node *)malloc(sizeof(Node)); 和 Node p 两个有什么区别??? Node是一
- C语言 指向结构体变量的指针
- 返回局部变量、局部变量的引用和指向局部变量的指针
- 深入理解C语言中的指向函数的指针!
- C语言中二维数组、二维指针、指向指针的数组、指向数组的指针
- C语言学习笔记.指针4--数组指针和指向数组的指针变量(一)
- 指向常量的指针常量,指向变量的指针常量,指向常量的指针变量的区别
- 20110410-C语言的字符串和指向字符的指针(字符指针)
- [*注意指向常量的字符指针变量*]用指向常量的字符指针变量和字符数组方法把字符串a复制到字符串b中
- 指向临时变量的指针的返回
- 常指针,指向常变量的指针
- 深入探讨常量、指向常量的指针,常量与变量的区别
- C语言有关指针的变量声明中的几个易错点
- C语言指针/指向指针的指针
- 深入理解C语言中的指向函数的指针和返回指针的函数!
- 如何获取变量类型及void指针中保存的指针指向什么类型的变量
- 指向成员函数的指针类型成员变量
- C语言:空指针与不指向任何对象的指针的区别