C语言讲义――指针(pointer)

匿名 (未验证) 提交于 2019-12-02 23:49:02

指针是C语言最重要的特性之一,
也是最容易被误解的特性之一。


现代计算机把内存分割为字节(Byte),
每个字节都有唯一的地址(Address),
如果内存中有n个字节,可以把地址看做0~n-1的数。

程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”,
假设变量int i占有内存2000~2003,则变量i的地址是2000。

口诀:
变量有位置,位置有地址
指针是变量,其值为地址

指针就是地址,指针变量就是存储地址的变量。
C语言要求每个指针变量只能指向一种特定的类型的对象。

int *p; double *q; char *r;

指针变量的赋值:

int i=2099; int*  p; P = &i; printf("%d", *p);

&取地址运算符
*间接寻址运算符

下例中:

i是普通变量,&i是存储变量的地址
p是指针,是地址,*p是指针指向地址的值

#include <stdio.h> main() {     int  i=2099;     printf("变量的值:%d\n", i  );     printf("变量的地址:%x\n", &i  );      int *p;     p = &i;     printf("指针(值):%d\n", *p  );     printf("指针(地址):%x\n", p  ); }

在变量声明时,如果没有确切的地址可赋值,为指针变量赋一个NULL值是一个良好的编程习惯。
赋为NULL值的指针称为“空指针”。

#include <stdio.h> int main(int argc, char *argv[]) {     int  *ptr = NULL;     printf("ptr的值是:char=%x, int=%d\n",ptr,ptr);      return 0; }

运行结果:

ptr的值是:char=0, int=0
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!