我试图将3维数组传递给函数.我得到了这个数组的贬值
char cube[N][N][N];
Run Code Online (Sandbox Code Playgroud)
它的大小(N)是常数.
我想将它传递给一个函数,这样我就可以在函数中处理数组并更改它,而无需每次调用复制整个数组.
我实际上想要将指针传递给数组的开头,并能够将一些信息放入函数中的数组中.
谢谢您的帮助.
看看这个节目.ptr如何获取数组中的所有内容?我有点困惑.
#include <stdio.h>
int main()
{
int arr[] = {10, 20, 30, 40, 50, 60};
int *ptr = arr;
// sizof(int) * (number of element in arr[]) is printed
printf("Size of arr[] %d\n", sizeof(arr));
// sizeof a pointer is printed which is same for all type
// of pointers (char *, void *, etc)
printf("Size of ptr %d", sizeof(ptr));
return 0;
}
Run Code Online (Sandbox Code Playgroud) 考虑以下代码:
int myArray [3] = {1, 2, 3};
std::cout << myArray << "\n"; // 0x22ff24
std::cout << &myArray << "\n"; // 0x22ff24
std::cout << *myArray << "\n"; // 1
std::cout << *(&myArray) << "\n"; // 0x22ff24
Run Code Online (Sandbox Code Playgroud)
为什么底部语句不给1,就像第三个语句一样?如果myArray等于&myArray,为什么*myArray不等于*(&myArray)?
说你在C中有一个字符数组.像这样:
char array[];
Run Code Online (Sandbox Code Playgroud)
现在,下面的哪些陈述将打印出地址.我知道1)和2)会,但3)还打印出地址吗?
1) printf("Arrays adress is %x\n", array);
2) printf("Arrays adress is %x\n", &array[0]);
3) printf("Arrays adress is %x\n", &array);
Run Code Online (Sandbox Code Playgroud) 我得到以下代码的输出 - > 6
我对输出感到困惑,因此我更改了一小部分代码并进行了检查.
我将此替换int * ptr=(int*)(a+1)为Not clear语句,我将输出作为 - > 1.怎么样?
我听说&a,a,a[0]都是同一个地址?是什么让它与众不同?
#include<stdio.h>
int main()
{
int a[] = {1, 2, 3, 4, 5, 6};
int *ptr = (int*)(&a+1); //NOT CLEAR
printf("%d ", *(ptr-1) );
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在做一个小实验.
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int A[5][5];
cout<<A[0]<<" "<<&A<<" "<<*A;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它为所有情况打印相同的值.有人可以解释为什么会这样吗?