相关疑难解决方法(0)

如何找到'sizeof'(指向数组的指针)?

首先,这里是一些代码:

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个字节)?

c arrays pointers sizeof

288
推荐指数
8
解决办法
35万
查看次数

如何查找整数数组的大小

如何在C中查找整数数组的大小

任何方法都可用而不遍历整个数组一次,以找出数组的大小.

c arrays

25
推荐指数
2
解决办法
12万
查看次数

查找函数内部的数组长度

在下面的程序中,数组的长度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)

我想知道如何定义函数,以便在函数中正确读取数组的长度.

c arrays

18
推荐指数
4
解决办法
3万
查看次数

找到作为c中函数的参数接收的整数数组的大小

我想找到作为函数参数传递的整数数组的大小.这是我的代码

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

c arrays

12
推荐指数
4
解决办法
2万
查看次数

如何在C99运行时计算可变长度数组的大小?

在C89中,数组的长度在编译时是已知的.但是在C99中,对于可变长度数组,在运行之前,数组的长度可能是未知的.

那怎么计算呢?

为什么不能以相同的方式计算动态分配的数组的长度?

c arrays c99 variable-length-array ansi-c

11
推荐指数
2
解决办法
1455
查看次数

C:将数组传递给函数并在接收函数中迭代

我想将一个数组传递给 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)

c arrays loops parameter-passing

4
推荐指数
1
解决办法
4342
查看次数

如何知道传递给函数的字符数组的大小(以字节为单位)?

我正在测试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)

c arrays pointers sizeof char

2
推荐指数
1
解决办法
4857
查看次数

动态分配的整数数组的大小

我正在处理类型的函数:

 int xyz(int input[])
Run Code Online (Sandbox Code Playgroud)

我无法访问main函数,因此不知道数组的大小.如何找到输入数组的大小?有没有办法知道数组的结束位置? sizeof(input)/sizeof(int*)给出1作为输入基本上是一个指针.

c

0
推荐指数
1
解决办法
299
查看次数

sizeof on array返回不同的值

我有这个测试程序,它给出了以下输出.

#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是什么在这里说的?

c++ arrays

-2
推荐指数
1
解决办法
114
查看次数