黑马程序员技术交流社区

标题: 指针的总结 [打印本页]

作者: 初见兔儿哥    时间: 2015-8-4 00:39
标题: 指针的总结
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;
}
作者: 莫盛强    时间: 2015-8-4 08:01
很好...............6
作者: 欢子    时间: 2015-8-4 12:48
赞赞赞!!
作者: neverbloom7    时间: 2015-8-5 00:08
学习学习
作者: 15095185209    时间: 2015-8-13 10:04
参观膜拜

作者: lucky24    时间: 2015-8-13 17:50
向你学习
作者: lucky24    时间: 2015-8-13 17:57
还是不太懂
作者: lucky24    时间: 2015-8-13 18:01
还是不太懂
作者: 飓风少年    时间: 2015-8-13 19:09
我就败给指针了!!我得继续学习
作者: cheenbee    时间: 2015-8-13 19:59
不够深,数组指针和指针数组没说到




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2