C语言讲义——指针(pointer)
2024-10-20 21:10:05
指针是C语言最重要的特性之一,
也是最容易被误解的特性之一。
现代计算机把内存分割为字节(Byte),
每个字节都有唯一的地址(Address),
如果内存中有n个字节,可以把地址看做0~n-1的数。
程序中的每个变量都占据字节(至少1字节),把第一个字节的地址称为”变量的地址”,
假设变量int i占有内存2000~2003,则变量i的地址是2000。
指针变量(pointer variable)
口诀:
变量有位置,位置有地址
指针是变量,其值为地址
指针就是地址,指针变量就是存储地址的变量。
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值是一个良好的编程习惯。
赋为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
最新文章
- jQuery之常用且重要方法梳理(target,arguments,slice,substring,data,trigger,Attr)-(一)
- Webix JavaScript UI 库可以帮你构建跨平台的HTML5 和 CSS3 程序
- canvas刮刮乐和画笔
- OpenStack 企业私有云的若干需求(3):多租户和租户间隔离(multi-tenancy and isolation)
- chrome表单自动填充去掉input黄色背景解决方案
- HTML和CSS特殊属性
- 如何进行fragment中的来回切换?
- 链接一个外部lib库的时候注意事项
- Binder机制,从Java到C (4. Parcel)
- MAMP 环境下为 php 添加 pcntl 扩展
- 无阻赛的脚本(js脚本延迟方法)
- 【pyHook】 监测键盘鼠标事件等
- Python时间、日期、时间戳之间的转换
- GO入门——7. 并发
- 嵌入式iframe子页面与父页面js通信方式
- 使用spring的特殊bean完成分散配置
- OpenCV常用库函数[典]
- lecture4特征提取-七月在线-cv
- 联想拯救者15-isk安装固态硬盘与系统迁移教程
- 「Vue」登陆-路由拦截器