C语言学习之指针 今天学习了指针最基础的知识掌握了指针相关的概念比如地址指针指针变量其次是相较于之前对指针的学习有了更多的认识比如指针在不同位数的计算机中指针占用的字节不同64位占用8个字节然后就是指针指向的字节大小取决于数据类型最后就是指针不初始化就是野指针初始化为NULL0x0一、 与 *1.取地址- 只有左值能够完成操作常亮和表达式不能执行操作- 连接的表达式一定有值值为该变量在内存中存放的空间的首地址- 连接的表达式一定有类型类型具有升级的效果int - int *int num 0; num; 获取num在内存空间的首地址2.取值*- 只有指针类型能够*操作普通变量无法执行*操作- *连接的表达式一定有值为指针指向的空间以首地址开始指向数据类型大小个自己的数据的值- *连接的表达式类型类型具有降级的效果 int * - int- *连接的表达式作为左值将右值放入指针指向的空间3.指针变量定义注意所有指针变量均为8个字节64位操作系统与指针类型无关数据类型 *变量名; int *p; char *p; float *p; double *p; int *p, *q;野指针未经初始化的指针空指针指向内存空间为0x0的指针0x0地址空间只能读不可写入4.指针的算数运算向内存高地址偏移指向数据类型大小个字节空间--向内存低地址偏移指向数据类型大小个字节空间两个指针相减获得两个地址之间差了多少个数据类型对应的元素5.指针的操作对指针变量赋值即改变指针指向对指针变量取 * 后赋值改变指针指向空间的值4.一维数组和指针的关系1.数组的数组名是指向数组第一个元素的指针常量(重点)2.可以将数组名a理解为 int *型有两种情况a不能理解为int *型sizeof运算时数组名不能理解为int*型运算时数组名不能理解为int*型