Tag: 数组

C负数组索引

这是我的结构: struct Node { struct Node* data; struct Node* links[4]; } 假设没有填充, Node->links[-1]保证指向Node::data ?

在C中初始化char数组

我不确定在初始化后以下列方式在char数组中会出现什么: char buf[5]={0,}; 这相当于 char buf[5]={0,0,0,0,0};

数组索引从数字0开始

是否有可能在索引不是零的情况下启动一个数组… IE你有一个数组a [35],35个元素,现在我想索引说起始100,所以数字将是[100],a [101],…… a [134],这可能吗? 我正在尝试为一块电路板生成一个“存储器映射”,我将有一个名为SRAM [10000]的arrays和另一个名为BRAM [5000]的arrays,但在“内存”可视性中它们是连续的,IE BRAM在SRAM之后启动,所以如果我试着指向内存位置11000,我会读它看到它超过10000然后将它传递给bram。 在输入这个时我意识到我可以假设然后从数字中减去10K并将其传递给BRAM,但是为了争论,是否可以将11000传递给BRAM? 感谢您的任何帮助。 更新以修复a [34]到[134] 更新了更多信息:在我将要实现的实际架构中,sram和bram之间可能存在差异,例如地址11008可能在内存映射中不可见,因此编写一个充满内存的巨型数组然后“分区”它将起作用,但我仍然需要做逻辑来确定它是否在“sram和bram”的范围内。 这首先是我想要避免的。

如何检查数组是否有任何重复?

我正在将文件的内容读入9元素数组。 我需要检查这个数组中是否有任何重复项。 我需要这样做而无需重新排序或更改数组的任何内容。 我该怎么做呢?

在C中初始化以NULL结尾的字符串数组的正确方法

这段代码是否正确? char *argv[] = { “foo”, “bar”, NULL };

C – malloc和数组混淆

我试图掌握C中的malloc函数,并编写了以下代码: int i; int *arr = (int*)malloc(5*sizeof(int)); if(arr==NULL){ printf(“Failed to allocate memory for arr…\n”); exit(1); } 我认为这意味着只有5个元素可以添加到数组中。 为了测试这是否属实,我添加了以下代码: arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; arr[5] = 6; arr[6] = 7; arr[7] = 8; arr[8] = 9; for(i=0;i<9;i++){ printf("%d\n",arr[i]); } 令人惊讶的是,该代码编译并运行完美。 怎么可能?

如果char * s是只读的,为什么我可以覆盖它们?

我的课程告诉我,char * s是静态/只读的,所以我认为这意味着你在定义之后就无法编辑它们。 但是当我跑步时: char* fruit = “banana”; printf(“fruit is %s\n”, fruit); fruit = “apple”; printf(“fruit is %s\n”, fruit); 然后编译好并给我: fruit is banana fruit is apple 为什么? 我误解了只读是什么意思吗? 很抱歉,如果这是显而易见的,但我是新手编码,我无法在线找到答案。

如果C有指针,为什么C需要数组呢?

如果我们可以使用指针和malloc来创建和使用数组,为什么数组类型存在于C中? 如果我们可以使用指针而不是没有必要吗?

是否可以(重新)将数组的所有值设置在一行中(在初始化之后)?

在C中,我知道我可以制作这样的数组 int myarray[5] = {a,b,c,d,e}; 但是,想象一下这个数组已经初始化了 int myarray[5]; 然后在某个时刻,我想设置/改变所有的值而不去 myarray[0] = a; myarray[1] = b; myarray[2] = c; myarray[3] = d; myarray[4] = e; 而是更喜欢的东西 myarray = {a,b,c,d,e}; 我问这个的原因是因为如果我在堆上声明我的数组,我将初始化数组,如: int* myarray = malloc(5*sizeof(int)); 然后我希望能够在一行中输入所有值(主要是为了让我的代码看起来更干净)

是从指针类型转换为指向类型为safe的数组的指针吗?

几天前,我偶然发现了一个代码,其中广泛使用从指针到类型到指针到类型数组的转换,以提供内存中线性向量的二维视图。 为清楚起见,下面报告了这种技术的一个简单例子: #include #include void print_matrix(const unsigned int nrows, const unsigned int ncols, double (*A)[ncols]) { // Here I can access memory using A[ii][jj] // instead of A[ii*ncols + jj] for(int ii = 0; ii < nrows; ii++) { for(int jj = 0; jj < ncols; jj++) printf("%4.4g",A[ii][jj]); printf("\n"); } } int main() { const […]