****************** 指针 *******************

------Java培训、Android培训、iOS培训、.Net培训、期待与您交


//

//  main.c

//  指针

//

//  Created by 李佳乐 on 15-3-17.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//

/*

*******************  指针变量概念及定义方法  *******************



指针:     地址

指针变量专门用来存放地址的变量


*******************  指针变量的定义  *******************

 


格式:     数据类型 * 指针变量名;


int *num  //  int * num // int* num (都可以)


*******************  注意  *******************

 


1> 指针变量只能用来存放地址

2> * 表示这个变量是一个指针变量

3> int 表示当前指针变量只能存放 int 类型的变量地址

4> 指针变量也区分全局的和局部的


double *pd: 定义了一个指针变量,变量名为pd ,pd 以后只能

用来存放double类型的变量


 

*******************  指针变量的初始化  *******************

 

 int a=3,b=3;

 int x=2,y;

 

 *******************  指针变量的初始化

 

 1> 定义的同时进行初始化

 

 

 int *p = &a;  //指针变量p指向了a,通过a的地址进入到a得内存空间获取到内容

 

 2> 先定义指针变量,然后初始化

 int *p1;

 p1 = &b;

 

 

 3> 可以用一个已经存在的指针变量初始化

 

 int *p1 = p;

 

 4> 给指针变量赋值 NULL

 

 int *p2 = NULL //表示 指针变量 p2指向内存中地址为0的地方

 int *p2 = 0;  // 特殊情况

 

 5> 指针变量可以被重新赋值(指向发生改变)

 

 int *p3 = &x;

 p1 = p3;

 

 6> int *p4;  //p4存放的是垃圾值

 

 

 使用 * 注意

 

 使用的场合有两个

 

 1> 用在定义指针变量的时候,表示定义的是一个指针变量

 2> *指针变量名   表示获取指针变量指向的内存空间

 

*/

#include <stdio.h>


int main(int argc, const char * argv[]) {

    int a = 3, b = 3;

    int *p = &a;  // p指向了a

    

    printf("%ld\n",sizeof(p));

    

    //使用* 获取指针变量指向的内存空间的内容

    

    printf("*p = %d\n",*p);

    



    //使用*p 设置指针变量指向的内存空间的内容

    *p = 100;

    printf("*p =%d\n",*p);

    

    

    return 0;

}





//  **********   用函数实现两变量值交换(指针传递地址)

//

//  Created by 李佳乐 on 15-3-17.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


#include <stdio.h>

/*


//**********   用函数实现两变量值交换(指针传递地址)


// 定义函数,实现两个变量值的交换

// (main函数中调用不能交换)


void swap1(int x,int y){

    int temp;

    temp = x;

    x = y;

    y = temp;

}

 

 

**********   地址交换,不改变内存中得数据

 

 

// 定义函数,实现两个变量值的交换:传地址方式(如果交换的是指针变量值

//则不能交换,因为当函数 执行完以后,交换的地址随之释放,内存空间的数据没有发生改变)


void swap2(int *px,int *py){

    

    

    int *ptemp;

    ptemp = px;

    px = py;

    py = ptemp;

    

    

}


*/

//**********   交换两指针变量的值



//定义函数,实现两个指针变量值的交换

void swap3(int *px,int *py){

    

    int ptemp;

    

    ptemp = *px;    //ptemp = 3

    *px = *py;      //a = b; a = 5 , b = 5;

    *py = ptemp;    // b = 3;

    

}


int main(int argc, const char * argv[]) {

    int a = 3,b = 5;

    

  //  void swap1(int a,int b);

    //调用函数实现交换

    swap3( &a, &b);

    

    printf("a = %d,b = %d\n",a,b);

    return 0;

}





//  在被调函数中,修改主调函数的变量值

//

//  Created by 李佳乐 on 15-3-17.

//  Copyright (c) 2015 gongsimingzi. All rights reserved.

//


//让一个函数可以有多个返回值


//问题,

//******************** 使用指针实现两个数的




#include <stdio.h>

//计算

void calulator(int x,int y,int *psum,int *pjian,int *pcheng,double *pchu){

    //x + y 的结果放到主调函数中 sum变量中

    *psum = x + y;

    *pjian = x - y;

    *pcheng = x * y;

    *pchu = x / (float)y;//float 强制类型转换,强制转换为float类型

}


int main(int argc, const char * argv[]) {

    int a = 10,b = 3;

    int sum,jian,cheng;

    sum = jian = cheng = 0;

    double chu;

    

    calulator(a,b,&sum,&jian,&cheng,&chu);

    printf("%d,%d,%d,%.2f\n",sum,jian,cheng,chu);

    return 0;

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值