A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jeffdy66 中级黑马   /  2015-11-10 00:15  /  1220 人查看  /  13 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

指针:是一个能存地址的数据类型
定义:类型 * 指针名
赋值:    指针变量名=指针(地址)注意:指针获取方法(&变量名)

何时用:当需要存储地址,便于操作该地址及地址对应的内存数据的时候.
特点:
指针本身也是地址,指针定义之后,自身地址不变,但里面的存的地址可以变化.
&p表示指针自身地址,而p表示指针存的地址.*p表示指针所存地址的内存空间.

int *p2;  int *p3[3];  这里的*p3[3]是什么意思?
答: 所表示的是一个由三个指向int型变量的指针变量所组成的数组,数组里面的每一个元素存储的都是指针






1.指针里存的实际是什么?
答:地址

2. 指针本身有地址吗?
答: 指针变量也是变量,变量就有地址.

3. 指针占几个字节?
答: 由操作系统决定,如是32位,占字节数为4,64位占8个字节.

4. 如何取指针里的数据?
答: *p

5.一个类型的指针可以存不同类型的地址吗?
答:不可以

编程题: 实现一个函数能够实现两个整数的加减乘除运算





#include <stdio.h>
int add(int a,int b,int *p4,int *p5,int *p6);
int main(){
   
//  定义变量
   
    int a=6;   
    int b=8;
    int c4,c5,c6;
    int *p4=&c4;
    int *p5=&c5;
    int *p6=&c6;
    int c3=add(a,b,p4,p5,p6);
   
    printf ("a+b=%d,a-b=%d,a*b=%d,a/b=%d\n",c3,c4,c5,c6);
}

int add(int a,int b,int *p4,int *p5,int *p6){
   
    // 函数调用
    *p4=a-b;
    *p5=a*b;
    *p6=a/b;
    return a+b;
}



int a=100 ,b=200;
    int *p=&a;
    int *q=&b;
    printf("a=%d,*p=%d\n",a,*p);
    printf("b=%d,*q=%d\n",b,*q);
   
    // 不可利用*p间接改变a变量值   *p=b ;这里是错的


    p=&b; // 但可以将p指针指向另一变量的地址
    printf("*p=%d\n",*p);
   
    // q=&a; 不可更改q指针指向另一变量的地址

    *q=888; // 可以利用q指针间接更改b的变量值.
   
    printf("*q=%d\n",*q);






     int a=100;
    int *p1=&a;
    int **p2=&p1; //
   
    printf("变量定义如下:\n");
   
    printf("int a=100:\n,int *p1=&a:\n,**p2=&p1:\n\n");
   
    printf("&a=%p\n",&a); // 0x7fff5bd5ac08
   
    printf("&p1=%p,p1=%p\n",&p1,p1); //0x7fff5bd5ac00     ,p1=0x7f5ac08
    printf("&p2=%p,p2=%p\n\n",&p2,p2);//
0x7ff5bd5abf8,p2=0x7fff5bd5ac00
   
    printf("**p2=%d,*p1=%d\n",**p2,*p1); // 100, 100

13 个回复

倒序浏览
研究的很深入嘛
回复 使用道具 举报
一旦你看透他是怎么回事 他真的不难。 他的好处就是地址传递 只每种数据类型的指针,表达式不同而已。
回复 使用道具 举报
学习了,顶一下
回复 使用道具 举报
学习了感谢总结
回复 使用道具 举报
arhui 发表于 2015-11-10 09:01
研究的很深入嘛

哈哈,大家相互学习和探讨,才能进步
回复 使用道具 举报
陆露 发表于 2015-11-10 10:19
一旦你看透他是怎么回事 他真的不难。 他的好处就是地址传递 只每种数据类型的指针,表达式不同而已。 ...

that's right  看来又是个大神呀.哈哈 希望相互交流呀
回复 使用道具 举报
陆露 发表于 2015-11-10 10:19
一旦你看透他是怎么回事 他真的不难。 他的好处就是地址传递 只每种数据类型的指针,表达式不同而已。 ...

  看来又是个大神呀.哈哈 希望相互交流呀,谢谢
回复 使用道具 举报
陆露 发表于 2015-11-10 10:19
一旦你看透他是怎么回事 他真的不难。 他的好处就是地址传递 只每种数据类型的指针,表达式不同而已。 ...

分析的很对呀, 指针就是地址传递,受教了.thank u
回复 使用道具 举报
hei军 中级黑马 2015-11-11 19:38:26
10#
看的有点晕乎
回复 使用道具 举报
感谢分享!!
回复 使用道具 举报
先看两眼,还没学到
回复 使用道具 举报
回来看一下对不对
回复 使用道具 举报
谢谢分享 学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马