分享

C语言关于指针和数组的各种问题

 ID被吃 2016-03-23
一、常量指针
让我们来分析一个表达式:假定变量a的存储位置为0x00000100,请看下面一条语句:
*0x00000100 = 25; 它看上去是将变量a赋值25,但是实际上他是错误的,因为,间接访问操作只
能作用于指针类型的表达式,所以这个地方必须要有强制类型转换,即:
*(int*)0x00000100 = 25;这样才是正确的。
这种方式在实际中并不是一定用不着,在嵌入式编程中,在需要从flash里读值或是写值的时候,就会用到!
二、如何识别 指针数组 还是 数组指针!!!(概念性问题)
例如 int * a[10] ; //可以讲这个声明堪称一个表达式,在这个表达式中,[ ] 优先级比*要高,
所以先执行下标引用,即a [ ]说明a是一个某种类型的数组,然后执行的是*操作,
即执行间接访问操作。之后这个表达式的操作符就全部看完了,所以它的结果是
一个int型,现在就很明确了,也就是例如 *(a[3]) = 整型,
所以这个a就是一个数组的首地址,而每个元素是一个int型指针。
int (*a) [10] ;利用上述方法很容就可以解答这个问题,它是一个指针,指向一个数组,这个数组有
10个元素,全是int型
三、指针的算术运算
1、指针 +- 整数
以 int *p;
p+1为例来说,实际上就是一定指针,真正移动的单位距离,和指针的类型有关。
2、

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多