码迷,mamicode.com
首页 > 其他好文 > 详细

指针基础

时间:2018-01-13 17:07:08      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:结构体   nbsp   运行   函数   pst   头文件   指针常量   释放   关系   

1、什么是指针?

 指针就是地址,那么什么是地址:内存单元的编号

   内存里面有很多单元,每个单元有8位(8个0,或8个1)  一个字节8个 ,00000000--一个单元编号 (地址)
int main(void)
{
 int * p;
 int i =3;
 p=&i;
}           
p:指针变量,可以存放其它变量地址
            p:保持了I的地址,因此 p指向I
            p不是i ,i也不是p,更准确的说,修改p的值不影响i的值,修改i的值不影响p 的值
            如果一个指针变量指向了普通变量,则,*p指针变量就完全等同于  普通变量
技术分享图片
注意: 变量 p 和 i ,    int i = 3 则  2000H地址存放的是3,而 p是地址变量,则 存放的是 i 的地址 2000H
                *p指的是以p的内容为地址的变量
 
2、指针与数组 
                    :一位数组名 是一个指针常量 , 存放的是一位数组第一个元素的地址 
                       int [] a ;   &a[0] =a

  1、确定一个数组需要的变量?

技术分享图片

 a :数组名 也就是第一a[0]的地址

  通过首个地址 确定数组的值

   2、下标和指针的关系?

    p[3]=*(p+3);

  a [ 3 ]  等价于 指针 *(a+3)  :a  是第一个元素的地址

3、sizeof(数据类型)的函数的基本应用

  

指针变量所占字节数 4个
 技术分享图片

 

理解 :
            1、p,q,r 存放的地址 都存 第一个地址
            2、一个X  有8个字节 ,每个字节有八位
            3、*q ,*p,*r :找到第一个字节编号, 再通过 数据类型 获取长度
            4、为什么指针变量的长度是4, 地址线32个 ,每个地址编号都要用32个0或1表示,那么久需要4个字节 八位
 
传统数组的缺陷:
            1、不能主动释放内存,只能由函数执行完以后自动释放
            2、长度必须是常整数
            3、数组一旦定义,其长度就不能更改,数组长度在运行过程中不能自动扩充或者减少
        
int * p = (int *)malloc(4);
            1、要是侵入malloc.h的头文件
            2、4表示请求系统为本程序分配4个字节
            3、malloc函数只能返回第一个字节地址
            4、需要强制转换(int * 告诉别人长度为4),
            5、一共分配8个字节(int * p 有8个,malloc(4)分配了4个)
            6、p 本身所占的内容是静态分配,p所指向的内存是动态分配的
free(p) 
            表示把p所指向的内存给释放掉
 
动态实现数组:
            int  a[5]  :如果int  占4个字节,那么本数组总共包括20个字节,每4个字节代表一个变量
            int len ;
            int * pArr
            pArr = (int *)malloc(4 * len *);
 
静态内存和动态内存的比较
        静态内存是由系统自动分配,由系统自动释放
        静态内存是在栈中分配的
        动态内存是由程序员手动分配,手动分配
        动态内存是在堆分配的(因为不是在栈中,所以可以跨函数使用)
结构体:
            为了解决复杂的定义而存在
            
技术分享图片

 

就是通过多个数据类型组成一个新的数据类型用来表示类
 
怎样使用结构体
        赋值和初始化
        如何去除结构体变量中的每一个成员
        结构体变量的运算
        结构体变量和结构体变量指针作为参数传递的问题
        动态构造存放学生信息的结构体
       
 技术分享图片

 

找到结构体的地址, 再赋值,最后通过 pst -->age = 88赋值
pst -->age = 88 :在计算机内部会转换为*pst.age = 888

指针基础

标签:结构体   nbsp   运行   函数   pst   头文件   指针常量   释放   关系   

原文地址:https://www.cnblogs.com/zklgy/p/8279272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!