作者:@张扶摇
本文为作者原创,转载请注明出处:https://www.cnblogs.com/zhangshengdong/p/9856287.html
目录
指针变量被赋某个变量的地址或0。
指针变量赋初值有三种情况:
1).用取地址运算符"&"将变量地址赋给指针变量。如:p=&a;
2).将一个指针变量中的地址赋给另一个指针变量,如:p1=p;
3).给指针变量赋空值0,如q=0;表示该指针变量不指向任何变量。
程序举例如下:
#include <stdio.h> int main( int argc, char *argv[]) { int var =20; int n[2]={10,18}; int *a1 ; int *a2; int *a3; int *a4; a1 = &var; a2 = n; a3 = 0x0000000000; a4 = 0; printf("int 存储大小 : %lu \n", sizeof(int)); printf("value of %p\n",a1); printf("value of %p\n",a2); printf("value of %p\n",a3); printf("value of %p\n",a4); printf("value of %d\n",*a2); /*指令格式:<指针变量>++; 指针变量自加运算是将指针变量指向下一个元素的运算。当计算机执行 <指针变量>++ 指令后,指针变量实际增加值为指针变量类型字节数,即 <指针变量>=<指针变量>+sizeof(<指针变量类型>)。 例如实际例子a2的首地址为1000,那么a2++之后的地址为1004. */ // printf("value of %p\n",++a2);//先计算,后引用 printf("value of %p\n",a2++); //先引用,后计算 printf("value of %p\n",a2); printf("value of %p\n",*a1); printf("value of %p\n",*a2); printf("value of %d\n",*a1); printf("value of %d\n",*a2); return 0; }
运行结果如下:
[zsd@TOMCAT ~]$ gcc ./test01.c -o test01 [zsd@TOMCAT ~]$ ./test01 int 存储大小 : 4 value of 0x7fff8e0aa7a4 value of 0x7fff8e0aa790 value of (nil) value of (nil) value of 10 value of 0x7fff8e0aa790 value of 0x7fff8e0aa794 (由于int类型,是4个字节,所有指针++,代表一个位置为0x7fff8e0aa794比0x7fff8e0aa790多4,这个4正好是int类型的字节数) value of 0x14 value of 0x12 value of 20 value of 18
感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统