一、指针
如果在程序中定义一个变量,在对程序进行编译,系统会自动给这个变量分配内存单元,根据不同的类型,分配不同长度的空间,如int占用4个字节,char占用1个字节。内存单元中每个字节都有编号,这就是地址。由于可通过地址能够找到所需的变量单元,可以说地址指向该变量单元。打个比方,一个房间的门口挂了一个房间号301,这个301就是房间的地址,将该地址形象化为指针。对于一个内存单元来说,单元的地址(编号)即为指针,其中存放的数据才是该单元的内容。
严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。
例如:
int a=12;
int *p=&a;
二、指针的指针(二级指针)
简单来说,二级指针变量就是一级指针变量的地址。
例如:
int a=12;
int *p=&a;
int **=&p;
表达式 | 相当的表达式 |
a | 12 |
p | &a |
*p | a,12 |
c | &p |
*c | p,&a |
**c | *p,a,12 |
三、指针数组和指针数组
int q[10]; //数组
int *p[10]; //指针数组
int (*r)[10]; //指针数组
例如:
#include<stdio.h> int main() { int a[4]={1,2,3,4}; int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1); printf("%x,%x\n",ptr1[-1],*ptr2); return 0; }
本文出自 “朔月云影” 博客,请务必保留此出处http://19940325.blog.51cto.com/10789287/1720046
c中指针----------指针、指针的指针、指针数组和数组指针
原文:http://19940325.blog.51cto.com/10789287/1720046