首先,这里是一些代码:
int main()
{
int days[] = {1,2,3,4,5};
int *ptr = days;
printf("%u\n", sizeof(days));
printf("%u\n", sizeof(ptr));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找出ptr指向的数组的大小(而不是仅仅给出它的大小,在32位系统上是4个字节)?
在下面的程序中,数组的长度ar在main中是正确的,但是temp它显示了ar我的计算机上指针的长度为2(以单位为单位sizeof(int)).
#include <stdio.h>
void temp(int ar[]) // this could also be declared as `int *ar`
{
printf("%d\n", (int) sizeof(ar)/sizeof(int));
}
int main(void)
{
int ar[]={1,2,3};
printf("%d\n", (int) sizeof(ar)/sizeof(int));
temp(ar);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何定义函数,以便在函数中正确读取数组的长度.
我想找到作为函数参数传递的整数数组的大小.这是我的代码
void getArraySize(int arr[]){
int len = (sizeof(arr)/sizeof(arr[0])
printf("Array Length:%d\n",len);
}
int main(){
int array[] = {1,2,3,4,5};
getArraySize(array);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下警告
sizeof on array function parameter will return
size of 'int *' instead of 'int []' [-Wsizeof-array-argument]
请帮忙,以便我可以在里面找到整数数组的长度function getArraySize
但是我能够找到函数array内部的大小.因为main它是作为一个传递的pointer,所以无法在中找到lengthfrom function.
我确实有一个想法.我可以把它放在一个try/catch块(C没有尝试捕获,只有操作系统依赖的跳线)和循环,直到我得到一个segmentation fault.
有没有其他方法可以用来找到integer array内部的长度function
在C89中,数组的长度在编译时是已知的.但是在C99中,对于可变长度数组,在运行之前,数组的长度可能是未知的.
那怎么计算呢?
为什么不能以相同的方式计算动态分配的数组的长度?
我想将一个数组传递给 C 中的函数并迭代它。我有这个代码:
#include <stdio.h>
int funct(int * a);
int main(int argc, char ** argv){
int a[5] = {0};
int b[5] = {1, 1};
printf("Size of cache: %d\n", sizeof(a));
printf("Array values:\n");
printf("Numb of elments in a[]: %d\n", (sizeof(a) / sizeof(a[0])));
for(int i = 0; i < (sizeof(a) / sizeof(a[0])); i++){
printf("for loop\n");
printf("%d\n", a[i]);
}
printf("\n");
printf("Size of cache: %d\n", sizeof(b));
printf("Array values:\n");
printf("Numb of elments in a[]: %d\n", (sizeof(b) / sizeof(b[0])));
for(int i = 0; i < (sizeof(b) / …Run Code Online (Sandbox Code Playgroud) 我正在测试sizeof运算符。在我的代码中的两种情况下,我得到了指针的大小(我认为)。在其他情况下,我得到数组占用的字节数。 将数组传递给函数时,如何以字节为单位获取数组的大小? 不是的sizeof操作符就够了吗?难道我做错了什么?
#include <stdio.h>
/*Testing the operator sizeof*/
void test (char arrayT[]);
void test2 (char *arrayU);
int main(int argc, char *argv[]){
char array1[7];
printf("array1 size is:%d\n", sizeof array1);
/*array1 size is: 7*/
char array2[] = { '1', '2', '3', '4', '5', '6', '7'};
printf("array2 size is:%d\n", sizeof array2);
/*array2 size is: 7*/
char array3[] = "123456";
printf("array3 size is:%d\n", sizeof array3);
/*array3 size is: 7*/
unsigned char array4[] = …Run Code Online (Sandbox Code Playgroud) 我正在处理类型的函数:
int xyz(int input[])
Run Code Online (Sandbox Code Playgroud)
我无法访问main函数,因此不知道数组的大小.如何找到输入数组的大小?有没有办法知道数组的结束位置?
sizeof(input)/sizeof(int*)给出1作为输入基本上是一个指针.
我有这个测试程序,它给出了以下输出.
#include<iostream>
#include<cstdio>
void fun(char arr[])
{
printf(".size of char : %d\n.", sizeof(arr[0]));
printf(".size of char array: %d\n.", sizeof(arr));
}
main()
{
char arr[10]={'a','b','c','d','e'};
fun(arr);
printf("size of char array: %d\n", sizeof(arr));
}
Run Code Online (Sandbox Code Playgroud)
产量
.size of char:1 ..size of char array:8 .size of char array:10
现在我明白在第一个语句中它的数组成员的大小和第三个语句的大小是整个数组的大小但是第二个printf中的8是什么在这里说的?