指针的定义

指针的概念

指针变量也是变量

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

指针是一种数据类型

 

指针变量的定义

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

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

posted @ 2018-02-08 17:06  heheheda  阅读(810)  评论(0编辑  收藏  举报