美文网首页
嵌入式day07

嵌入式day07

作者: 小土豆dy | 来源:发表于2019-07-31 18:57 被阅读0次

指针运算

指针的算术运算:

运算符 计算形式 意义
+ px+n 指针向地址大的方向移动n个数据
- px-n 指针向地址小的方向移动n个数据
++ px++ 指针向地址大的方向移动1个数据
-- px-- 指针向地址小的方向移动1个数据
- px-py 两个指针之间相隔数据元素的个数

注意:

不同数据类型的两个指针实际加减整数运算是无意义的

px+n表示的实际位置的地址量是:

(px) + sizeof(px的类型) *n

px-n表示的实际位置的地址量是:

(px) - sizeof(px的类型) *n

两指针相减运算

px-py运算的结果是两指针指向的地址位置之间相隔数据的个数,因此两指针相减不是两指针持有地址值相减的结果。

s两指针相减的结果值不是地址量,而是一个整数值,表示两指针之间相隔数据的个数。

指针的关系运算

运算符 说明 例子
> 大于 px > py
< 小于 px < py
>= 大于等于 px >= py
<= 小于等于 px <= py
!= 不等于 px != py
== 等于 px == py

两指针之间的关系运算表示它们指向的地址位置之间的关系。指向地址大的指针大于指向地址小的指针。

指针与一般整数变量之间的关系运算没有意义。但可以和零进行等于或不等于的关系运算,判断指针是否为空。


指针与数组

在C语言中,数组的指针是指数组在内存中的起始地址,数组元素的地址是指数组元素在内存中的起始地址

一维数组的数组名为一维数组的指针(起始地址)

设置指针变量px的地址值等于数组指针x(即指针变量px指向数组的首元素)

注意:

指针变量和数组在访问数组中元素时,一定条件下其使用方法具有相同的形式,因为指针变量和数组名都是地址量;但指针变量和数组的指针(或叫数组名)在本质上不同,指针变量是地址

变量,而数组的指针是地址常量。

指针与二维数组

多维数组就是具有两个或两个以上下标的数组,在C语言中,二维数组的元素连续存储,按行优先存

可以把我二维数组看作由多个一维数组组成

二维数组名代表数组的起始地址,数组名加1,是移动一行元素。因此,二维数组名常被称为行地址。

行指针(数组指针)

存储行地址的指针变量,叫做行指针变量。

<存储类型> <数据类型> (*<指针变量名>)[表达式]

方括号中的常量表达式表示指针加1,移动几个数据。

当用行指针操作二维数组时,表达式一般写成1行的元素个数,即列数。

字符指针与字符串

C语言通过使用字符数组来处理字符串

通常,我们把char数据类型的指针变量称为字符指针变量。字符指针变量与字符数组有着密切关系,它也被用来处理字符串。

初始化字符指针是把内存中字符串的首地址赋予指针,并不是把该字符串复制到指针中

在C编程中,当一个字符指针指向一个字符串常量时,不能秀爱指针指针指向的对象的值

练习:不用任何字符串函数,编程实现字符串连接函数的功能

#include<ctype.h>
int main(int argc, char *argv[])
{
 char ch[30] = "hello world";
 char *q, *p = "hello world";
 int i = 0;
 q = p;
 while(*(ch+i) != '\0'){
 i++;
 }
 while(*p != '\0'){
 *(ch+i) = *p;
 i++;
 p++;
​
 }
 *(ch+i) = *p;
 p = q;
 puts(ch);
 puts(p);
 return 0;
}

结果:


相关文章

网友评论

      本文标题:嵌入式day07

      本文链接:https://www.haomeiwen.com/subject/zpfxdctx.html