黑马程序员——C语言笔记之指针

来源:互联网 发布:淘宝网天天特价女棉衣 编辑:程序博客网 时间:2024/04/25 18:12

 ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------


一.指针

1.指针就是指向的地址

2.指针变量:用来存放地址的变量

3.指针变量的定义:

   数据类型 * 指针变量名

   例:int * p;    1) 定义了一个指针变量,变量名是p

                         2)  int表示,p只能存放一个int类型的变量地址

4.指针变量定义的注意事项:

    1)“*”必须得有

    2)指针变量不能用来存放数值和字符

    3)指针变量有全局和局部之分

5.初始化

    1) 定义的同时初始化

        完全初始化

      例 :int *p= &a;用a的地址进行初始化,p指向了a

         部分初始化

      例:int *p1=&b,  *p2;   p1和p2都指向了b

              p2= &b;

   2)先定义后初始化

       例:int *p3;

              p3=null;

6.注意事项:

   1)“*” 用法:用于定义指针变量指向地址

                        取出指向地址里面的值

   2)指针变量作用:获取指针变量指向空间的内容

                               获取指针变量值所对应的存储单元    

   3)指针变量必须要初始化,如果不初始化,指针变量里存放的是垃圾值和系统程序的地址,会造成系统崩溃,这时的指针变量也就是野指针      

二.数组指针 

1.指向数组元素的指针就是数组指针

2.使用数组指针间接访问数组元素

3.数组指针的定义

   例:int *p;

4.数组指针初始化:

   int a[4]={1,2,3,4}

   int *p=a;数组指针,定义了一个指针变量p赋值数组首地址

   int *p=&a[0]; p指向数组的第一个元素的值


三.指针数组

1.存放指针的数组就是指针数组

2.指针数组的定义

     数据类型*数组名[数组长度]

 例:int *p1[4];  定义了一个指针数组,数组名为p1,可以存放3个int类型变量指针

3两个指针之间减法运算

1)两个指针都指向同一个数组

      判断两个指针变量指向的元素地址是否是连续的

      判断两个指针变量之间相隔几个元素

注意:两个指针变量之间没有加法运算

2)俩个指针变量之间的关系运算

   例:p1>p

    结果是1则表示p1在高位

    结果是0则表示p在高位或者他们指向同一个地址

四.二维数组指针

1.行指针,用来指向二维数组的每一行,存放的是行的首地址

2.二维数组定义:数据类型 (*行指针变量名)[数组第二维长度]

3.二维数组指针初始化:

例:int a [2] [3];

      int (*p) [3]=a;

五.字符串指针

1.字符串指针定义:char *字符串指针变量名=“字符串内容”

2.注意:1)指针变量都是占用8个字节

2)指针变量可以重新指向另一字符串,并保存新的字符串的首地址

3)字符串是在常量区存储,常量区存储的数据只能读,不能修改

六.二维字符数组

1.用二维数组来保存多个字符串注意:

1)第一维存的是每个字符串的首地址

2)每个字符串的长度不能超多第二维的长度

2.char型指针数组和字符数组的区别:

1)char型指针指向可以改变

例:char *ss=“abcd”;

        ss是一个指针变量,指向时可以变的

        ss= “hello”

2)字符数组:

例:char s1[ ]={''abc"};

s1是一个常量,不能被赋值,所以s1=“hello”是错误的写法


七.内存分区

1.malloc动态内存分配

   格式:void *malloc(unsigned  size);

   从内存堆区分配大小为size个字节的连续内存空间,如果内存分配成功,放回内存的地址,失败则返回Null

2.calloc分配指定块数和长度的内存空间

   格式:calloc(块数,长度)

   callo可以自动初始化为0

3.realloc扩充已经存在的空间的大小

   格式在:realloc(已存在的空间,块数)

八.指针函数和函数指针

1.指针函数就是返回值是指针的函数

格式:指针类型*函数名( ){

                 return  地址

         }

2.函数指针就是指向函数的指针变量,即本质是一个函数指针变量

   函数指针变量是存放函数首地址的指针变量

    定义:返回值类型(*变量名)(函数的参数);

    定义函数指针的时候也可以不用写参数




0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一多半宝宝爱喝水不爱吃饭怎么办 十个月宝宝不爱吃饭怎么办 十个月宝宝突然不爱吃饭怎么办 二十个月宝宝不爱吃饭怎么办 十个月的宝宝不爱吃饭怎么办 6年级学生数学差怎么办 打印机打不出来就是一张白纸怎么办 wps表格下拉数字不递增怎么办 wps表格圈怎么打出来怎么办 手表固定圈掉了怎么办 起来觉得头晕头胀怎么办? 孩子不好好写作业怎么办 孩子考试考差了怎么办 孩子计算题马虎大意怎么办 二年级孩子不认字怎么办 发现计算上的错误怎么办 孩子不好好做作业怎么办 手破了红肿了怎么办呢 老师反应孩子在校粗心胆小怎么办 四年级的学生计算粗心怎么办 老打孩子骂孩子怎么办 站久了脚肿了怎么办 孩子初中了书写越来越潦草怎么办 给孩子自由孩子无法无天怎么办 孩子挑食幼儿园老师该怎么办 老师说孩子挑食家长怎么办 工作中老是粗心不细心怎么办 小孩数学总是特别粗心该怎么办 孩子起范疙瘩的怎么办 做题马虎不认真怎么办 孩子考差了家长怎么办 小孩写作业不认真怎么办 小孩不认真检查作业怎么办 一年级的小孩作业不认真怎么办 一年级学生做题粗心怎么办 一年级的学生做题粗心怎么办 孩子做作业注意力不集中怎么办 小学三年孩子抄答案怎么办 孩子写作业不认真审题怎么办 一年级小孩审题不认真怎么办 孩子审题不认真马虎怎么办