-
数组和指针的关系:
- 数组用于存储一系列相同类型的数据。
- 指针用于存储变量地址,可以用来访问和操作数组中的数据。
声明示例:
c
复制
int a[5]; int *p = NULL;
指针和数组名的关系:
c
复制
p = &a[0]; // 指针指向数组的第一个元素 p = a; // 数组名可以直接赋值给指针,表示数组的第一个元素的地址
注意点: - 数组名
a
是一个指向数组第一个元素的指针常量(不可更改)。 - 数组元素的访问方式:c a[n] == *(a+n) == *(p+n) == p[n]
- 在 C 语言中,所有指针都可以使用[]
访问内存空间,指针[n]
等同于*(指针 + n)
。 -
一维数组作为函数参数:
- 函数参数声明方式:
c
复制
int fun(int array[5]); int fun(int array[], int len); int fun(int *array, int len); // 最常见的方式
练习实现:
c
复制
int InputArray(int *parray, int len); int BubbleSort(int *parray, int len); int OutputArray(int *parray, int len);
- 函数参数声明方式:
-
一维字符型数组和指针的关系:
- 字符数组的数组名是指向数组第一个元素的指针。
示例:
c
复制
char str[32] = "hello world"; char *p = NULL; p = &str[0]; p = str;
字符串遍历操作:
c
复制
while (*p != '\0') { p++; }
练习:编写函数统计字符串长度。
-
字符型数组和字符串作为函数参数:
- 函数参数声明方式:
c
复制
int fun(char *pstr);
练习实现:
c
复制
int GetCount(char *pstr, int *pdaxie, int *pxiaoxie, int *pshuzi, int *pkongge); int Reverse(char *pstr); int MyStrcpy(char *pdst, char *psrc);
- 函数参数声明方式:
-
const
指针:const
表示只读属性,即不可修改。const
指针的几种形式:c
复制
int const *p; // 1 const int *p; // 2 int *const p; // 3 const int *const p; // 4 int const *const p; // 5
- 第1和第2种形式是等价的,表示指针指向的数据是常量,不能通过指针修改。
- 第3种形式表示指针本身是常量,一旦初始化后,指针的值不能改变,但可以通过指针修改指向的数据。
- 第4和第5种形式是等价的,表示指针本身和指向的数据都是常量。
const
指针的使用场景: - 在函数中传递字符串时,防止字符串被修改。 - 指向字符串常量的指针应该定义为const
类型,如const char *p = "hello world";
。
嵌入式学习day11
最新推荐文章于 2024-07-26 20:44:38 发布