美文网首页程序员
C 语言之指针

C 语言之指针

作者: CarsonChen | 来源:发表于2016-01-05 22:28 被阅读100次

    一. 定义指针

    指针定义的三要素:

    1. 数据类型

    2. 变量名

    3. 初始值

    Eg: int *a = NULL, char *b = NULL, float *c = NULL; 

    注:NULL表示为空,恒为0

    指针变量的大小仅跟操作系统的位数有关,32位操作系统占4个字节,64位操作系统占8个字节与long型变量类似.

    int char float表示指针所指向的存储空间对应的数据类型,与指针本身无关

    二. 指针的运算符

    1. &为取地址的单目运算符

    2. *与指针连用则为取该指针指向空间的内容

    Eg: int number = 5; int *p = &number; *p -> number; (->表示等价)

    3. %p为指针打印输出的格式控制符,将其打印显示为地址编号十六进制表现形式

    4. &与*为互逆运算

    三. 指针获取空间内容

    int a = 6; short *p = &a;

    如上操作可以通过编译,但指针p通过*取内容时,一次能取多少个字节的空间,取决于指针定义时的函数类型

    如果指针的类型与其指向的空间类型不匹配,地址依然可以被保存,但是指针在取内容运算和算数运算时可能得不到正确结果.

    四. 指针与数组

    1. int array[10] = {0}; 

    &array与array的地址相同,但其类型部同,&array的类型自增运算则加为整个数组长度,而array自增是一个元素的长度,并且二者均不能被修改.

    &array 的实际数据类型是  

    int (*array)[10] 为数组指针 为指向10个元素的指针

    int *array[10] 为指针数组  为有10个元素的数组,每个元素都是指向整型的指针

    2. sizeof()是取字节运算符,可以获取数据类型和变量的字节数

    3. const关键字修饰一个变量为只读变量(不允许修改)const出现在指针类型的左侧表示指针指向的空间通过*运算符运算时不能修改,出现在指针类型的右侧表示指针变量不能重指向.同时出现,表示指针变量既不能重指向,其指向的空间也不能被修改

    相关文章

      网友评论

        本文标题:C 语言之指针

        本文链接:https://www.haomeiwen.com/subject/yzyzhttx.html