下标法、数组名法和指针法的区别
时间: 2024-04-23 20:22:21 浏览: 43
下标法、数组名法和指针法都是访问数组元素的方法,它们的区别如下:
1. 下标法:使用数组下标访问数组元素,即使用a[i]来访问数组a的第i个元素。其中i必须是一个整数常量或变量,不能是表达式或指针。下标法是最常用的数组访问方法,它的优点是简单、易懂、易于使用,缺点是不能用于指向数组的指针。
2. 数组名法:使用数组名加索引访问数组元素,即使用*(a+i)来访问数组a的第i个元素。其中i可以是任何表达式,包括指针。数组名法的优点是可以用于指向数组的指针,缺点是语法比较繁琐,
相关问题
C语言用常规下标法、数组名作为指针访问数组元素、指针变量下标法访问数组元素、使用指针变量访问数组元素4种方法编写从键盘输入数组元素和显示数组元素。
以下是四种方法编写从键盘输入数组元素和显示数组元素的C语言代码:
1. 常规下标法:
```c
#include <stdio.h>
int main() {
int array[10];
int i;
// 从键盘输入数组元素
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个元素:", i+1);
scanf("%d", &array[i]);
}
// 显示数组元素
printf("数组元素为:");
for (i = 0; i < 10; i++) {
printf("%d ", array[i]);
}
return 0;
}
```
2. 数组名作为指针访问数组元素:
```c
#include <stdio.h>
int main() {
int array[10];
int *ptr = array;
int i;
// 从键盘输入数组元素
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个元素:", i+1);
scanf("%d", ptr);
ptr++;
}
// 显示数组元素
printf("数组元素为:");
ptr = array;
for (i = 0; i < 10; i++) {
printf("%d ", *ptr);
ptr++;
}
return 0;
}
```
3. 指针变量下标法访问数组元素:
```c
#include <stdio.h>
int main() {
int array[10];
int *ptr = array;
int i;
// 从键盘输入数组元素
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个元素:", i+1);
scanf("%d", &ptr[i]);
}
// 显示数组元素
printf("数组元素为:");
for (i = 0; i < 10; i++) {
printf("%d ", ptr[i]);
}
return 0;
}
```
4. 使用指针变量访问数组元素:
```c
#include <stdio.h>
int main() {
int array[10];
int *ptr = array;
int i;
// 从键盘输入数组元素
for (i = 0; i < 10; i++) {
printf("请输入第 %d 个元素:", i+1);
scanf("%d", ptr);
ptr++;
}
// 显示数组元素
printf("数组元素为:");
ptr = array;
for (i = 0; i < 10; i++) {
printf("%d ", *ptr);
ptr++;
}
return 0;
}
```
定义一个整型二维数组并初始化,编程求该数组所有元素的和。要求:分别用数组下标法、一级指针法、二级指针法实现。
下面是三种实现方式的代码:
1. 数组下标法:
```c
int main() {
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
sum += a[i][j];
}
}
printf("sum = %d", sum);
return 0;
}
```
2. 一级指针法:
```c
int main() {
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int* p = &a[0][0];
int sum = 0;
for (int i = 0; i < 12; i++) {
sum += *(p + i);
}
printf("sum = %d", sum);
return 0;
}
```
3. 二级指针法:
```c
int main() {
int a[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
int** p = a;
int sum = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
sum += *(*(p + i) + j);
}
}
printf("sum = %d", sum);
return 0;
}
```
需要注意的是,三种实现方式的本质是相同的,只是访问数组元素的方式不同。数组下标法是最直观的方式,一级指针法是通过指针访问数组元素,二级指针法是通过指针的指针访问数组元素。
阅读全文