相关疑难解决方法(0)

C数组可以在元素之间包含填充吗?

我听说有传言说,在C中,包含在结构中的数组可能在数组的元素之间添加了填充.显然,填充量不能在任何元素对之间变化,或者使用简单的指针算法计算数组中的下一个元素是不可能的.

这个谣言还指出,结构中没有包含的阵列保证不包含填充物.我知道至少那部分是真的.

因此,在代码中,谣言是:

{
    // Given this:
    struct { int values[20]; } foo;
    int values[20];

    // This may be true:
    sizeof(values) != sizeof(foo.values);
}
Run Code Online (Sandbox Code Playgroud)

我非常肯定sizeof(values)会永远相等sizeof(foo.values).但是,我无法在C标准(特别是C99)中找到明确证实或否认这一点的任何内容.

有谁知道这个谣言是否在任何C标准中得到解决?

编辑:我知道在数组foo.values的结尾和结构的结尾之间可能存在填充foo,并且标准声明在开始foo和开始之间不存在填充foo.values.但是,是否有人引用引用标准,其中表示元素之间没有填充foo.values

c arrays padding

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

在C中比较两个数组,逐个元素

为了使我的计算物理项目中的一个程序(不是由我编写)更加动态,我一直在努力实现C中非常简单的事情:在if条件下逐个元素地比较两个不同的数组.

#include <math.h>
#include <stdio.h>
#include "header.h"
const   int nParam = 10;
double  a[nParam], a_tmp[nParam];
double values[10000];

double FitParam(double x){
    int xindex;
    double value;

    xindex=(int) x;

    if (a_tmp[1]==a[1] && a_tmp[2]==a[2] && a_tmp[3]==a[3] && a_tmp[4]==a[4]){ 
        value=values[xindex];
        return(value);
    }

// code continues... (very long subroutine and there is recursion for
// the subroutine so this if statement above is very important).
Run Code Online (Sandbox Code Playgroud)

每次运行程序时,数组a []都有不同数量的重要元素; 例如,现在,我们仅将这个子程序用于元素[1]到[4].但是,在其他情况下,我们希望分别拥有更少或更多的元素,例如最多3个元素或最多5个元素.

基本上,我希望能够重写上面的if语句,使其成为动态...换句话说,如果考虑了N个元素,那么它将会:

if (a_tmp[1]==a[1] && ... && a_tmp[N]==a[N]){}

因此,每当我们感兴趣的元素的数量N改变时,条件应该变化(N被定义为该文件的头部中的#define,我将其命名为header.h).

非常感谢您对此任务的支持.谢谢.

c arrays

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

如何在C编程语言中比较两个数组?

我想比较两个不同的数组,它们都是int. 第一个数组是静态的,包含 1 到 10 的数字,第二个数组要求用户输入十个不同的数字,程序会检查两个数组中的哪些元素相等。

#include <stdio.h>

int main(void) {
    int array1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int array2[10];
    int i;

    for (i = 0; i < 11; i++) {
        printf("Enter numbers: ");
        scanf("%d", &array2);
    }

    for (i = 0; i < 11; i++) {
        if (array1[i] != array2[i]) {
            printf("Not equal \n");
        } else {
            printf("They are equal. \n");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

即使我输入的数字等于存储在第一个数组中的数字,程序也总是说不相等。

c arrays

5
推荐指数
1
解决办法
6万
查看次数

数组的平等性c

我必须检查两个数组(1-D)与整数元素的相等性.

我明白没有直接的比较方式.所以我正在进行基本的迭代并检查每个元素的相等性.

 for ( int i = 0 ; i < len ; i++) {
    // Equality check
Run Code Online (Sandbox Code Playgroud)

在C中测试数组相等性的最有效方法是什么?我可以以某种方式逃脱循环(为......)吗?

c arrays

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

标签 统计

arrays ×4

c ×4

padding ×1