相关疑难解决方法(0)

查找指针指向的数组大小

我有以下代码:

int* d = (int*) malloc(100 * sizeof(int));
cout<<"size of d which is pointer is: " << sizeof(d)<<endl;
Run Code Online (Sandbox Code Playgroud)

我知道sizeof输出4,因为d是ptr.但是,如何使用sizeof找到整个数组的大小

c++

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

我怎么知道数组中的元素数量

我运行以下代码,但它一直打印"4"

为什么它的打印"4"而不是"12"?我可以使用malloc然后使用sizeof吗?(如果可以,那么如何)

#include<stdio.h>
int main()
{
    int arr1[3]={1,2,3};
    int *arr2=arr1,i;
    printf("%d",sizeof(arr2));
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

c c++ arrays memory-management dynamic

0
推荐指数
3
解决办法
174
查看次数

为什么我的sizeof(arr)/ sizeof(arr [0])= 1?

typedef struct {
  double *x;
  int points;
} Polygon;



polygon[cc].points = readobject(polygon[cc].file); //lets say equals 15
polygon[cc].x = (double *) malloc(polygon[cc].points * sizeof(double));

printf("%d\n", sizeof(polygon[cc].x) / sizeof(polygon[cc].x[0]));
//This prints out on 1
Run Code Online (Sandbox Code Playgroud)

我测试初始化xx[100],然后它工作,但不应该malloc()调用设置结构的数组x[15]?它只是测量两个doubles 的字节吗?

c arrays malloc struct pointers

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

为什么sizeof运算符无法在函数模板中工作?

我正在尝试学习C++函数模板.我传递一个数组作为指向我的函数模板的指针.在那,我试图找到一个数组的大小.这是我使用的功能模板.

template<typename T>
T* average( T *arr)
{
    T *ansPtr,ans,sum = 0.0;    

    size_t sz = sizeof(arr)/sizeof(arr[0]);
    cout<<"\nSz is "<<sz<<endl;

    for(int i = 0;i < sz; i++)
    {
        sum = sum + arr[i];
    }
    ans = (sum/sz);
    ansPtr = &ans;
    return ansPtr;
}
Run Code Online (Sandbox Code Playgroud)

即使我将指针传递给整数数组,该cout语句也会显示arras 的大小.现在我知道这可能是我之前提到的问题的可能重复,但我需要对此有更好的解释.15

我唯一能想到的是,因为模板是在运行时调用的,并且sizeof是一个编译时运算符,所以编译器只是忽略了这一行

   int sz = sizeof(arr)/sizeof(arr[0]);
Run Code Online (Sandbox Code Playgroud)

因为在实际调用函数之前它不知道arr的确切类型.这是正确的还是我错过了这里的东西?将指针发送到函数模板也是可靠的吗?

c++ templates sizeof

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

strlen()给出了数组中空字节的错误大小原因

我有一个从流反序列化的动态char数组.

char *myarray文件内容(使用hexal编辑器):

      4F 4B 20 31 32 20 0D 0A 00 00 B4 7F
Run Code Online (Sandbox Code Playgroud)

strlen(myarray) 返回8,(必须是12)

c c++ arrays strlen deserialization

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

为什么malloc在我的c程序中不起作用?

struct BOOK
{
    char name[120];
    char author[120];
    int  year[50];
};

int main (void)
{
    int          i;
    int          number;
    struct BOOK* books;

    number = 50000;

    printf("before \nsizeofbooks %d \n sizeofBOOK %d\n",
           sizeof(books), sizeof(struct BOOK));

    books = (struct BOOK*)malloc(sizeof(struct BOOK) * number);

    printf("sizeofbooks %d \n sizeofBOOK %d\n",
           sizeof(books), sizeof(struct BOOK));

    free(books);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

before
sizeofbooks 4
sizeofBOOK 440
after
sizeofbooks 4
sizeofBOOK 440
Run Code Online (Sandbox Code Playgroud)

它总是输出4,即使我写入不同的数组,但我希望它会改变.我究竟做错了什么?

我的操作系统是winxp 32位,我使用的是代码块.

c malloc sizeof

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

方法调用后字节大小不正确

我制作了一个最小的工作示例,我有一大段代码.

问题是,sizeof打印第一次调用16,这是正确的大小,而第二次调用只打印8.奇怪的是,它总是打印8,独立于结构的大小,是否只有一个值或10个值.

struct test_struct
{
    int32_t val1;
    int32_t val2;
    int32_t val3;
    int32_t val4;
};

unsigned char * StructToChar(test_struct structy)
{
    unsigned char returnval[sizeof(structy)];
    memcpy(returnval, &structy, sizeof(structy));
    return returnval;
}

int main()
{
    test_struct sendstruct = {};
    unsigned char *test_array = StructToChar(sendstruct);

    unsigned char returnval[sizeof(sendstruct)];
    memcpy(returnval, &sendstruct, sizeof(sendstruct));

    printf("%d\n", sizeof(returnval));
    printf("%d\n", sizeof(test_array));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ arrays char memcpy

-3
推荐指数
1
解决办法
44
查看次数

sizeof(指针变量)/ sizeof(数组的第一个元素)的结果总是显示2

通常要找到阵列的大小,我们做..

int A[]={1,2,67,9,0,-1,-90};
int n=sizeof(A)/sizeof(A[0]);
printf("the size of the array is %d\n", n);`
Run Code Online (Sandbox Code Playgroud)

上面代码的输出显示大小为7.但当A被放入某个指针然后,如果我们尝试做同样的,它显示

int A[]={1,2,67,9,0,-1,-90};
int *B=A;
int n=sizeof(B)/sizeof(B[0]);
printf("the size of the array is %d\n", n);
Run Code Online (Sandbox Code Playgroud)

答案是2

如何使用此指针找到数组的大小.

c pointers sizeof

-5
推荐指数
1
解决办法
134
查看次数

sizeof动态数组不正确

在阵列有四个元件,因此大小应4BIT*4 = 16(int数据类型采取在我的系统4位以存储该值.)但是,当我跑这个代码我只得到8位为的大小dynamicArray.

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    //Dynamic arrays save memory by creating a pointer that stores
    //the beginning of the array
    int *dynamicArray = malloc(20 * sizeof(int));
    *dynamicArray = 10;
    printf("Address %x stores value %d\n", dynamicArray, *dynamicArray);

    dynamicArray[1] = 20;
    printf("dynamicArray[1] stores value %d\n", dynamicArray[1]);
    dynamicArray[2] = 45;
    printf("dynamicArray[2] stores value %d\n", dynamicArray[2]);
    dynamicArray[3] = 34;
    printf("dynamicArray[3] stores value %d\n", dynamicArray[3]);
    printf("The size of dynamicArray is %d\n", sizeof(dynamicArray));

    // Release unused memory:
    free(dynamicArray);

    return …
Run Code Online (Sandbox Code Playgroud)

c malloc sizeof dynamic-arrays

-6
推荐指数
1
解决办法
124
查看次数

sizeof在创建数组后在c ++中运行异常

可能重复:
如何查找sizeof(指向数组的指针)

我正在使用以下代码创建一个数组

float *A;
A = (float *) malloc(100*sizeof(float));
float *B;
B = (float *) malloc(100*sizeof(float));
Run Code Online (Sandbox Code Playgroud)

但在这些之后,当我按下面的方式键入A和B的大小时,我得到2,因为我希望看到100.

sizeof(A)/sizeof(float)
Run Code Online (Sandbox Code Playgroud)

c++ arrays sizeof

-7
推荐指数
1
解决办法
168
查看次数