c基础 - 指针为什么要有类型?

前言

变量:就是给内存地址取一个别名;

1. 概述

指针其实就是一块地址,而且它的值都差不多 都是 类似003DFE84,都是 00+6位数字或字母 这种方式,那么为什么指针要有类型呢?原因如下:

  1. 取值的时候,我要知道怎么取,比如是按照4字节、8字节、16字节,就是debug方式,调试 - 窗口 - 内存 - 内存1,这样去查看;
  2. 指针的偏移:如果用 int* 接收,那么指针移动时按4字节来移动,double*接收,移动时按照8字节来移动;
2. 代码如下

// 指针为什么要有类型? 指针其实就是一块地址,而且它的值都差不多,
// 原因有2个:
// 1. 取值的时候,我要知道怎么取:4字节、8字节、16字节,就是debug方式,调试 - 窗口 - 内存 - 内存1,这样去查看;
// 2. 指针的偏移:指针移动时,如果是int类型指针,按照4字节移动;如果是double类型指针,按照8字节移动
void main(){
    int num = 12;

    int* num_p = #

    // double* num_p_d = num;

    printf("%p" , num_p);
    getchar();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,743评论 0 6
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,102评论 0 12
  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 10,216评论 1 19
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,805评论 1 32
  • 关于0xE000EDF0这个地址在技术手册上没有是可以确定的!但是不排除我手上的技术手册不全的原因。今天的收获是了...
    Cheer_up阅读 3,150评论 0 0