假设以下代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
int arrayXYZ[10];
int i;
int *pi;
int intVar;
for (i=0; i<10; i++){
arrayXYZ[i] = i;
}
pi = arrayXYZ; // Reference 1
pi++; // Reference 2
arrayXYZ++; // Reference 3
arrayXYZ = pi; // Reference 4
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的所有澄清!我是新成员,所以如果我的问题没有遵循Stackoverflow指南,请随时告诉我如何改进我的下一个问题!
arrayXYZ++;
Run Code Online (Sandbox Code Playgroud)
这相当于:
arrayXYZ += 1;
Run Code Online (Sandbox Code Playgroud)
这相当于:
arrayXYZ = arrayXYZ + 1;
Run Code Online (Sandbox Code Playgroud)
这是不允许的,因为C语言不允许它.无法分配数组.
arrayXYZ = pi;
Run Code Online (Sandbox Code Playgroud)
出于同样的原因,这也失败了.无法分配数组.
其他分配有效,因为您可以分配给指针.
还要记住,数组和指针是不同的数据类型.在C中,为了方便起见,有些情况下数组会衰减成指向其第一个元素的指针.这就是为什么这个有效:
pi = arrayXYZ;
Run Code Online (Sandbox Code Playgroud)
但是,这只是一个自动转换,因此您不必编写:
pi = &arrayXYZ[0];
Run Code Online (Sandbox Code Playgroud)
这种自动转换并不意味着数组与指针相同.
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |