C 在数组中存储变量的地址

标签 c arrays pointers

void main()
 {
 int a=10;
 int *j;
 *j=&a;
 b[]={1,2,3,4};
 b=j;
 }

有人问我这个程序有什么问题吗,我只是很困惑,一切看起来都很好。只是好奇想知道。

最佳答案

打开所有编译器警告和错误。然后它会准确地告诉你程序出了什么问题。

*j = &a; 违反约束。 *j 的类型为 int,但 &a 的类型为 int *,这是不兼容的。

您的意思可能是 j = &a; ,它将把 j 指向 a

b[]={1,2,3,4}; 是语法错误。也许您的意思是 int b[]={1,2,3,4}; 它将声明一个数组。

b=j; 违反了约束条件,因为 b 是一个数组,并且无法对数组进行赋值。 (从技术上讲:因为 b 是一个数组,所以会衰减为右值并且无法分配右值)。

但是,j = b; 是可以的,它会使 j 指向 b 的第一个成员;

void main() 是不可移植的,它应该是 int main()

关于C 在数组中存储变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27916655/

相关文章:

c++ - 调色板图像需要有效的调色板

c++ - 编译单个大头文件(VS : C1063)

java - 求二维数组长度?

c - 如何在C中复制一个char数组?

java - 检查点数组是否位于矩形数组内?

C++ Overload Operator = for Pointers 不能正常工作/编译

c - 尝试编写一个 C 程序来按字母顺序对二维数组中的 25 个单词进行冒泡排序

c - strtok(我想)错误我无法理解

c - 指向变量的指针?

c++ - 访问指向 vector C++ 的指针