c语言指针与数组的关系
时间: 2024-04-20 10:08:27 浏览: 21
在 C 语言中,数组名本质上是一个常量指针,它存储着数组首元素的地址。因此,数组和指针在某种程度上是等价的。
具体来说,对于一个数组变量 arr,可以使用指针方式来访问数组元素,如 *(arr+i) 或者 arr[i]。同时,对于一个指针变量 ptr,也可以将其视为一个数组名来使用,如 ptr[i] 和 *(ptr+i) 都是合法的。
此外,数组名和指针变量在作为函数参数传递时也有一些区别。对于一个数组参数,函数内部修改数组元素的值会影响到原始数组;而对于一个指针参数,函数内部修改指针变量的值不会影响到原始指针。因此,在需要修改原始数组的情况下,应该使用数组作为函数参数;在需要修改指针变量本身的情况下,应该使用指针作为函数参数。
相关问题
C语言指针数组与数组指针
C语言中,指针数组和数组指针是两种不同的概念。
指针数组是指一个数组中的每个元素都是一个指针。这意味着每个元素存储的是一个内存地址,可以指向其他变量或数据。指针数组的声明形式为:`类型 *数组名[数组大小]`。例如,`int *ptrArray`表示一个包含5个指向整型数据的指针的数组。
数组指针是指一个指针,它指向一个数组的首地址。数组指针的声明形式为:`类型 (*指针名)[数组大小]`。例如,`int (*ptr)`表示一个指向包含5个整型数据的数组的指针。
指针数组和数组指针的使用场景略有不同。指针数组常用于表示多个相关的变量,可以方便地遍历和操作每个元素。数组指针常用于指向多维数组,可以通过指针访问和修改数组中的元素。
c语言指针实现数组倒序
以下是两种C语言指针实现数组倒序的例子:
1.使用while循环和指针实现数组倒序
```c
void reverse_string(char* arr) {
int l = 0;
int r = strlen(arr) - 1;
while (l < r) {
char tmp = *(arr + l);
*(arr + l) = *(arr + r);
*(arr + r) = tmp;
l++;
r--;
}
}
int main() {
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr); // 输出:fedcba
return 0;
}
```
2.使用递归和指针实现数组倒序
```c
int Strlen(char* arr) {
int count = 0;
if (*arr != '\0') {
count++;
count += Strlen(arr + 1);
}
return count;
}
void reverse_string(char* arr) {
int sz = Strlen(arr);
char tmp = *arr;
*arr = *(arr + sz - 1);
*(arr + sz - 1) = '\0';
if (Strlen(arr + 1) >= 2) reverse_string(arr + 1);
*(arr + sz - 1) = tmp;
}
int main() {
char arr[] = "abcdef";
reverse_string(arr);
printf("%s\n", arr); // 输出:fedcba
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)