什么 scanf("%d", array + i);做
What scanf("%d", array + i); does
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", array + i);
}
}
**scanf("%d", array + i);**有人能解释一下吗?我有一个代码可以从用户输入中获取数组的元素。目前我很难理解这部分代码到底做了什么
这个函数定义
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", array + i);
}
}
等同于
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", &array[i] );
}
}
这个表达式 array + i
给出了指向数组第 i 个元素的指针。
函数 scanf
中使用的格式 %d
需要指向类型 int
的对象的指针,并且此表达式 array + i
使用指针算法生成指针.
表达式 array[i]
等同于表达式 *( array + i )
.
所以表达式 &array[i]
与 &*( array + i )
相同,其中应用的运算符 &*
可以省略,您将只得到 ( array + i )
.
涉及三个概念:
scanf("%d", pointer)
方法将从stdin
读取整数值(%d
)并将其写入pointer
. 引用的内存中
- 数组的性质:C中的数组在内存中线性存储:
n
大小的int数组在内存中只有n * sizeof(int)
个字节,数组的变量与指向的指针相同它的第一个元素。
- 指针运算:
array + i
将指针移动 i
个 int 类型的内存单元,即 i * sizeof(int)
个字节。这正是数组的第 i 个元素所在的位置。所以 array + i
是指向 array[i]
. 的指针
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", array + i);
}
}
**scanf("%d", array + i);**有人能解释一下吗?我有一个代码可以从用户输入中获取数组的元素。目前我很难理解这部分代码到底做了什么
这个函数定义
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", array + i);
}
}
等同于
void get_elemnts(int *array, int max_index){
for(int i = 0; i < max_index; i++){
printf("enter element 0%d: ", i);
scanf("%d", &array[i] );
}
}
这个表达式 array + i
给出了指向数组第 i 个元素的指针。
函数 scanf
中使用的格式 %d
需要指向类型 int
的对象的指针,并且此表达式 array + i
使用指针算法生成指针.
表达式 array[i]
等同于表达式 *( array + i )
.
所以表达式 &array[i]
与 &*( array + i )
相同,其中应用的运算符 &*
可以省略,您将只得到 ( array + i )
.
涉及三个概念:
scanf("%d", pointer)
方法将从stdin
读取整数值(%d
)并将其写入pointer
. 引用的内存中
- 数组的性质:C中的数组在内存中线性存储:
n
大小的int数组在内存中只有n * sizeof(int)
个字节,数组的变量与指向的指针相同它的第一个元素。 - 指针运算:
array + i
将指针移动i
个 int 类型的内存单元,即i * sizeof(int)
个字节。这正是数组的第 i 个元素所在的位置。所以array + i
是指向array[i]
. 的指针