为什么作为参数发送的数组的大小与main中的相同?
#include <stdio.h>
void PrintSize(int p_someArray[10]);
int main () {
int myArray[10];
printf("%d\n", sizeof(myArray)); /* As expected, 40 */
PrintSize(myArray);/* Prints 4, not 40 */
}
void PrintSize(int p_someArray[10]){
printf("%d\n", sizeof(p_someArray));
}
Run Code Online (Sandbox Code Playgroud) 请参阅下面的代码并建议我使用" sizeof "关键字时有什么不同:
#include<stdio.h>
#include<conio.h>
void show(int ar[]);
void main()
{
int arr[]={1,2,3,4,5};
clrscr();
printf("Length: %d\n",sizeof(arr));
printf("Length: %d\n",sizeof(arr)/sizeof(int));
show(arr);
getch();
}
void show(int ar[])
{
printf("Length: %d", sizeof(ar));
printf("Length: %d", sizeof(ar)/sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
但输出是这样的:
输出是:
长度:10
长度:5
长度:2
长度:1
为什么我会这样; 如果我想将整个数据从一个数组转移到另一个数组,我该怎么办?
建议我如果有人知道.
#include <stdio.h>
#include <iostream>
using namespace std;
int write(int arr[])
{
int n = (sizeof(arr)/sizeof(arr[0]));
for(int r=0;r<n;r++)
{
printf("%d\n", arr[r]);
}
return 0;
}
int main()
{
int numlist[] = {1, 3, 5, 6, 7, 9, 0, 2, 3};
write(numlist);
std::string strvar;
std::cin >> strvar;
}
Run Code Online (Sandbox Code Playgroud)
屏幕上打印的内容只是数字"1".而已.刚开始使用C而我只是试图掌握语法.