C09 指针
Posted rask
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C09 指针相关的知识,希望对你有一定的参考价值。
目录
- 概念
指针相关概念
变量
如果在程序中定义了一个变量,在对程序进行编译时,系统就会为这个变量分配内存单元。
编译系统根据程序中定义的变量类型分配一定长度的空间。
内存的基本单元是字节,一字节有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 q:0x%x k = %d ", p, q, k); return 0; }
输出结果:
以上是关于C09 指针的主要内容,如果未能解决你的问题,请参考以下文章
[SPOJGCJ1C09C] Bribe the Prisoners