#include<stdio.h> int main (){ int array[4][5]={0}; int i,j,k=0; for(i=0;i<4;i++) { for(j=0;j<5;j++) { array[i][j]=k++; } } printf("array:%p\n",array); printf("(array):%p\n",(array)); printf("array[0]:%p\n",array[0]); printf("&array[0][0]:%p\n",&array[0][0]); printf("(array):%d\n",(array)); return 0; }为啥这段代码中printf("(array):%p\n",(array));不是取值而是取地址
时间: 2024-04-17 09:22:58 浏览: 142
在这段代码中,`printf("(array): %p\n", ());` 实际上是取地址,而不是取值。
在C语言中,数组名本身就是一个指向数组首元素的指针。在这里,`array` 是一个二维数组,它指向二维数组的首行。当你使用 `(array)` 时,它会被解释为指向二维数组的指针,即指向二维数组的首行的指针。
因此,`printf("(array): %p\n", (array));` 打印的是指向二维数组的首行的指针的地址。
注意,这里使用了圆括号将 `array` 括起来,这是因为在 C 语言中,当你想要将一个数组名作为一个整体进行操作时,使用圆括号可以提高代码的可读性。
我希望这次能够解答到您的问题。如果您还有其他疑问,请随时提出。
相关问题
修改以下代码#include <stdio.h> int main(){ int array[5]; int num; for(int i=0;i<5;++i){ printf("请输入第%d个值",i+1); scanf("%d",&array[i]); } for(int j=0;j<5;++j){ num+=array[i]; printf("%d",num) } retuen 0; }
修改后的代码如下:
```c
#include <stdio.h>
int main() {
int array[5];
int num = 0; // 初始化 num
for (int i = 0; i < 5; ++i) {
printf("请输入第%d个值: ", i + 1);
scanf("%d", &array[i]);
}
for (int j = 0; j < 5; ++j) {
num += array[j]; // 使用正确的下标 j
}
printf("%d\n", num); // 在循环外打印结果
return 0;
}
```
修改了以下几处错误:
1. 初始化了变量 `num`,避免使用未初始化的变量。
2. 将 `num += array[i];` 修改为 `num += array[j];`,使用正确的下标 `j`。
3. 在循环外打印结果 `printf("%d\n", num);`,避免在循环内重复打印。
#include <stdio.h> #include <stdlib.h> // 动态数组需要使用标准库的malloc和free函数 int main() { int m, n; printf("Input array size m,n:"); scanf("%d,%d", &m, &n); // 动态申请二维数组并初始化为0 int **scores = (int **) malloc(m * sizeof(int *)); for (int i =
0; i < m; i++) { scores[i] = (int *) malloc(n * sizeof(int)); for (int j = 0; j < n; j++) { scores[i][j] = 0; } } // 输出二维数组 printf("The array is:\n"); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { printf("%d ", scores[i][j]); } printf("\n"); } // 释放动态申请的内存 for (int i = 0; i < m; i++) { free(scores[i]); } free(scores); return 0; }
这段代码的作用是动态申请一个 m 行 n 列的二维数组,并将其初始化为0。然后输出该二维数组并释放动态申请的内存。这是一个基础的动态数组的应用,可以在需要时动态申请内存,使用完毕后再释放内存,避免浪费内存空间。这在处理大型数据时非常有用。
阅读全文
相关推荐
















