C语言学习中整理的知识
来源:互联网 发布:minecraft0.15js 编辑:程序博客网 时间:2024/05/29 17:11
说明:大家好,我所写的东西是我在学习C语言的过程中遇到的一些问题,这些问题我碰到之后觉得重要会记录下来,理解并用自己的话去解释,有些不对的地方还望大家指正。
另外这些都是我平时做题时或者看书时想到的,可能不是按部就班的,没有先后顺序,望大家见谅。
一维数组与指针之间的关系;
假如指针变量 px 指向数组 x[] 的首元素,则;
x[i], * (px+i), * (x+i), px[i]具有完全相同的功能,即访问数组第 i+1 个元素。
首先, x[i] <==> * (x+i) 是无条件等价的,指针变量指向数组 x[] 的首元素==> px = x;
那么,px[i] == x[i] , * (px+i) = * (x+i).
所以以上4中方式的表达功能是一样的。指针变量 px 和数组名 x (也叫数组的指针)有着本质的区别。
指针变量是地址变量,而数组的指针是地址常量,来看几个例子;
x++;
px++;
x+1;在以上3条语句中
x++; 是错误的,因为数组的指针是地址常量不能做++运算;
px++; 是正确的,px为指针可以++,向地址大的方向移动,且自加一次移动的地址为所指向数据类型的字节数。
eg:若指针为 int 型,px++,地址往大的方向移动 4 位;
x+1; 是正确的,因为 x+1; 执行之后并没有改变 x 的值。
#include <stdio.h>int main(){int a[] = {1, 2, 3, 4, 5, 6, 7};int * p;p = a;a+1;p++;printf("%d\n",p[1];return 0;}
个程序的结果是 3
首先指针 p 指向了数组 a[] 的首元素,也就是1;
然后 a+1; 这句没什么意义,因为数组名 a 是常量;
接着 P++;指针往后移了一次,指向了 a[1],此时 a[1] = p[0];
最后打印出 p[1],p[1]相当于 p[0+1],也就是 a[1+1] == a[2],所以结果是3.
“`
- C语言学习中整理的知识
- C语言知识整理
- C 语言知识整理
- C语言的学习整理
- 从学习C语言中获得的知识
- c语言学习中遇到的几个关键知识
- 黑马程序员-Object-C语言中创建类和对象的知识整理
- 【学习ios之路:C语言】C语言中容易出错的试题整理.
- 一些简单知识的整理—C语言(一)
- C语言整理:几个库函数的学习
- C语言知识整理(一)
- C语言知识整理(二)
- C语言知识整理(三)
- 嵌入式C语言知识整理(1)
- c语言初级阶段知识整理(一)
- c语言知识整理(二)
- C语言知识整理(四)
- C语言零散知识学习
- xamarin android使用gps定位获取经纬度
- POJ 3020 Antenna Placement (最小边覆盖/最大匹配应用)
- 个人感悟
- 常量池、栈、堆的比较(慢慢消化)
- shord_ptr
- C语言学习中整理的知识
- Android进阶之路--启动模式
- python作业(7.8 —— 7.9)
- 关于变量说明
- Android_手势 滑动图片
- 【dp】51nod 1270 数组的最大代价
- java中String new和直接赋值的区别(空了还要补充)
- 4. Median of Two Sorted Arrays
- 关于MongoDb分片