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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 初见兔儿哥 中级黑马   /  2015-8-4 00:39  /  597 人查看  /  9 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

1.指针的定义: 数据类型 *指针变量名

2.指针的赋值:指针变量名=&... 或者 指针变量名 =数组名

注意:定义的时候 * 仅代表这是在定义一个指针变量,没有其他的意义

eg.

int main()
{
    int *p;//定义指针变量
    int a=10;
    p=&a;//给指针变量赋值,给的是变量a的地址符
    printf("%d",*p);//获取指针变量的值  
              
}
复制代码

3.指针操作数组时,因为数组是属于引用类型的,所以将数组名直接赋值给指针,就相当于把数组的地址给了指针

eg .

int main()
{
   
    char *p;//定义指针变量
    char arr[]={'a','b','c','\0'};
    p=arr;//给指针变量赋值 也可以 p =arr[0]
   
    //利用指针访问数组
   
    printf("%c",*(p+1)); //代表获取数组从0+1位置点元素
    printf("%c",*p); //访问的是数组的第0个元素
   
    return 0;
}
复制代码

4.指针指向函数

  定义要指向函数的指针: 函数的返回值 (*指针变量名)(参数类型,...)

  给指针变量赋值:指针变量名=函数名称

  调用指针(相当于调用函数):指针变量名(参数值,...)或者(*指针变量名)(参数值,...)

  作用:这个指针就是用来间接调用函数的

eg.

#include <stdio.h>

//声明函数
int test(int,int);

int main()
{
   //定义指向函数的指针
    int (*p)(int,int);
    //给指针赋值
    p=test;
    //利用指针调用函数,并接受返回值
    int sum=  p(1,2);
    int sum2= (*p)(10,20);
    //输出
    printf("sum=%d,sum2=%d",sum,sum2);
   
    return 0;
}
//定义函数
int test(int a,int b)
{
    return a+b;
}
复制代码

5.返回指针的函数

  定义函数:返回值类型 *函数名(){}

#include <stdio.h>

//声明函数
char *test();

int main()
{
    //调用指针函数
    char *result=test();
    //输出
    printf("%s",result);
    return 0;
}
//定义函数
char *test()
{
    return "abc";
}
复制代码

6.指向指针的指针

  定义:数据类型 **指针变量名

  赋值:指针变量名=&变量

int main()
{
   
    int  a=10;
    //定义指针,指向a
    int *p=&a;
    //定义指向指针的指针
    int **p2;
    //给p2赋值
    p2=&p;
   
    //利用指针指向a改变a的值
    *p=20;
    printf("p改变:a=%d\n",a);
    //利用指向指针的指针改变a的值
    *(*p2)=30; //*p2  就代表指向指针p ,然后再加上 * 就相当于利用指针p去访问a
    printf("p2改变:a=%d",a);
    return 0;
}

9 个回复

倒序浏览
很好...............6
回复 使用道具 举报
欢子 来自手机 中级黑马 2015-8-4 12:48:06
藤椅
赞赞赞!!
回复 使用道具 举报
学习学习
回复 使用道具 举报
参观膜拜
回复 使用道具 举报
向你学习
回复 使用道具 举报
还是不太懂
回复 使用道具 举报
还是不太懂
回复 使用道具 举报
我就败给指针了!!我得继续学习
回复 使用道具 举报
不够深,数组指针和指针数组没说到
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马