指针的定义

Posted heheheda

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了指针的定义相关的知识,希望对你有一定的参考价值。

指针的概念

指针变量也是变量

指针存放的内容是一个地址,该地址指向一块内存空间

指针是一种数据类型

 

指针变量的定义

可以定义一个指向变量的指针变量

int *p; //表示定义一个指针变量

*p  //代表指针所指内存的实际数据

切记指针变量只能存放地址,不能将一个int变量直接赋值给一个指针

 

内存的最小单位是BYTE

对于内存每个BYTE都有一个唯一不同的编号

这个编号就是内存地址

一个地址编号,对应的是BYTE的空间大小

一个int 4个BYTE 占用四个地址编号

 

地址编号

在32位系统下,是一个4个字节的无符号的整数

在64位系统下,是一个8个字节的无符号的整数

 

1个char 占用1个地址编号

long long 占用8个地址编号

#include<stdio.h>

int main()
{
    int *p;  //定义了一个可以执行int类型地址的指针变量,名字叫 p   int *是一种数据类型 
    int a;   //定义了一个int类型的变量,名字叫a 
    a = 1;
    p = &a;  //把a的内存地址赋值给p
    *p = 10;  //通过指针变量间接的访问a的值,*p代表指针指向变量的值,p代表指向变量的地址 
    printf("%p\n", p);   //printf函数族中对于%p一般以十六进制整数方式输出指针的值
                         //输出的是首地址的第一个编号  
    printf("a = %d\n", a);    //输出a的值是10
    a = 100;
    printf("*p = %d\n", *p);    //输出*p是100
    
    int b = 2;
    p = &b;    //又指向了b的地址 
    printf("%d\n", *p); 
    void *p2;  // 可以指向任何类型的地址,void代表无类型                
    return 0; 
 } 

数据类型不兼容的时候,会出现错误,强转也会出错

char *p1;

int *p2;

long  long *p3;

printf("%lu, %lu, %lu\n",sizeof(p1), sizeof(p2) ,sizeof(p3) );

不管指向什么类型的变量,在同一系统下,地址的大小总是一样的

32位 4      64位 8

以上是关于指针的定义的主要内容,如果未能解决你的问题,请参考以下文章

片段中的 EditText 上的空指针异常 [重复]

片段中的空指针异常

活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常

访问片段的子视图时出现空指针异常

使用回收器适配器获取空指针

空指针异常 - 片段活动