设为首页 加入收藏

TOP

C指针基础
2015-02-02 14:43:09 来源: 作者: 【 】 浏览:10
Tags:指针 基础

任何的数据类型我们都可以把它当成个模子,然后可成各种类型的数据;任何模子都又其特定的大小。


int *p;


用sizeof测试下,sizeof(p) 或者sizeof(int)是4byte,于是可以这样定义:


一个int类型的模子在内存上刻出大小为4字节的空间,然后把4个字节大小空间命名为p。同时限定这4字节连续空间只能存储某个内存地址,即使你存入别的任何数据,都将被当做地址处理,而且这个内存地址开始的连续4字节上只能存储某个int数据。


我们把p称为指针变量,p里存储的内存地址处的内存称为p指向的内存。


int *p = NULL? ? and? ? *p = NULL


第一个是初始化。初始的是什么呢,就是将p本身的地址初始为0.


*p = NULL是将p指向的内容初始为0.


double *p = NULL;
?printf("%d\n",sizeof(p));? //始终是4byte,指针变量本身的空间
?int *pt = NULL;
?printf("%ox\n",pt);? //通过编译器查看pt的值为ox
?int i = 10;
?int *pp = &i;
?printf("%d\n",i);
?*pp = NULL;
?printf("%d",i);? //最后i的值变为0


再看:


int *p;


*p = NULL;


定义了一个指针变量p,但是p本身的地址不为人知,也许就是非法的,作用后续的也可能会报错。


改进:


int i = 20;


int *p = &i;


*p = NULL;


将数值存储到指定的内存地址:


假设将数值0x100存储到地址为0x12ff7c上,那么这个地址可以这样得来,:我可以随意定义个变量,比如int i;然后取地址,那么这个地址肯定是可以访问的。


int *p = (int *)0x12ff7c;


*p = 0x100;


也可以这样:*((int *)0x12ff7c) = 0x100;


C语言梳理一下,分布在以下10个章节中:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java中ListIterator和Iterator详.. 下一篇Java通过正则表达式实现Excel小插..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: