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

C09 指针

时间:2018-12-26 23:01:20      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:运算   \n   元素   单元   系统   就会   inf   受限   bubuko   

目录

  • 概念

 

指针相关概念

变量

如果在程序中定义了一个变量,在对程序进行编译时,系统就会为这个变量分配内存单元。

编译系统根据程序中定义的变量类型分配一定长度的空间。

内存的基本单元是字节,一字节有8位。每字节都有一个编号,这个编号就是“地址”。

 

直接访问变量

在程序中一般是通过变量名来对内存单元进行存取操作的。其实程序经过编译以后已经将变量名转换为变量的地址,对变量值的存取都是通过地址进行的。这种按变量地址存取变量的方式称为直接访问方式。

 

间接访问变量

间接访问的方式,即变量中存放的是另一个变量的地址。也就是说,变量中存放的不是数据,而是数据的地址。就

按C语言的规定,可以在程序中定义整型变量、实型变量、字符型变量,也可以定义这样一种特殊的变量,它是存放地址的。

 

指针

由于通过地址能找到所需的变量单元,因此也可以说,地址“指向”该变量单元。

如同一个房间号指向某一个房间一样,只要告诉房间号就能找到房间的位置。

因此在C语言中,将地址形象地称为“指针”,意思就是通过它能找到以它为地址的内存单元。

所以,一个变量的地址就称为该变量的指针。

指针就是地址,而地址就是内存单元的编号。它是一个从零开始的、操作受限的非负整数。

指针和指针只能进行相减运算,不能进行其他运算,因为没有意义。

而且进行相减运算也是有条件的:只有同一块空间中的地址才能相减。而且两个指针变量相减之后的结果是一个常量,而不是指针型变量,即相减的结果是这两个地址之间元素的个数,而不是地址的个数。

 

指针变量

概念

一个变量专门用来存放另一个变量的地址,那么就称它为“指针变量”。即指针变量里面存放的是指针,即地址。

“指针”和“指针变量”的区别:指针是一个地址;而指针变量是存放地址的变量。

通常也将“指针变量”简称为“指针”。

 

指针变量的定义

语法格式:

基类型  *指针变量名;

 

基类型:数据类型和*组合再一起构成指针类型变量类型。

不同数据类型在内存中所占用的字节数是不同的,指针一般指向数据所在内存的第一个字节地址。

指针的运算中,地址加减的基本单位是数据类型的字节数。例如整数的指针变量+1,实际上在内存中是移动4个字节。

示例代码:

#include <stdio.h>

int main ()
{
    int *p, *q;
    int k;  //k用来存放两个地址数相减的结果
    int i = 3, j = 4;
    p = &i;
    q = &j;
    k = p-q;
    printf("p:0x%x\nq:0x%x\nk = %d\n", p, q, k);
    return 0;
}

 

输出结果:

技术分享图片

 

C09 指针

标签:运算   \n   元素   单元   系统   就会   inf   受限   bubuko   

原文地址:https://www.cnblogs.com/rask/p/10178157.html

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