当前位置:   article > 正文

嵌入式学习之C语言6-指针,指针与一维数组

嵌入式学习之C语言6-指针,指针与一维数组

第六章 指针

1.什么是指针

指针是变量的内存地址 如:printf("%p",&a);//输出变量a的地址

                                            printf("%d",*(&a));//输出该地址的数据

2.什么是指针变量

指针变量变量用来存放地址

如何定义指针变量?  int *p;  p=&a;

 3.指针变量为什么要求类型?

如图,两个不同类型的指针变量,他们指向的首地址是一样的,那么他们偏移长度会一样吗?

不同类型的指针变量对应单个数据所占内存长度不同,如图,不同类型的指针指向同一个变量,打印出的数据会缺失 

将地址++,对应增加的长度不同,int(4个字节)  char(1个字节)

 4.指针的应用场景:

a).结合前面所学知识 ,函数中形参的地址main函数中使用的变量的地址不一样的,故如下图,要交换两个数据,要使用指针变量作为形参

注意:p与q后面放的是地址,num1和num2是整型变量,不是数组,要获取它的地址必须加上“&”取地址符

b).固定指向某一个地址(已知八位的地址)

5.定义一个指针变量指向一维数组,并打印

 

指针变量遍历数组补充:当遍历一次数组后,想再次遍历数组,需要重置数组的首地址p=arr

 

6.指针和数组的见怪不怪

使用指针打印数组     

printf("p=%d\n",*(p+i));//打印首地址的数据

printf("p=%d\n",*p++);//打印首地址的数据

若想指定打印某个数:

a)下标法

  int *p=arr; printf("%d\n",p[2]);//打印数组中的第三个数

  int *p=arr; printf("%d\n",p[i]);//打印数组中的第i个数

b)数组名法

  int *p=arr; printf("%d\n",*(a+2));//数组a的第三个数据

  错误写法:int *p=arr; printf("%d\n",*a++);  //编译不过数组a为常量,无法像p指针变量进行自加

7.关于指针的sizeof

 对于指针变量,长度恒定为8字节

 练习:函数封装,形参包含指针,打印一维数组结合练习


练习:逆序输出数组

 

 调用:

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号