Tag: 数组

计算C中数组中元素的数量

在将数组传递给函数后,如何获取C中整数数组中存在的元素数? 以下代码不起作用。 size=sizeof(array)/sizeof(array[0]);

将char缓冲区传递给函数并获取缓冲区的大小

我已将缓冲区设置为100.我在声明缓冲区的main函数中显示缓冲区。 但是,当我将缓冲区传递给函数并获得sizeof’4’时,我认为它应该是100,因为这是我在main中创建的缓冲区的大小。 输出:缓冲区大小:100 sizeof(缓冲区):4 #include #include void load_buffer(char *buffer); int main() { char buffer[100]; printf(“buffer size: %d\n”, sizeof(buffer)); load_buffer(buffer); return 0; } void load_buffer(char *buffer) { printf(“sizeof(buffer): %d\n”, sizeof(buffer)); }

我如何按位XOR两个C char数组?

我觉得愚蠢无法解决这个问题,但我迷失了。 我试图XOR两个C字符串。 #include #include #include int main() { char plainone[16]; char plaintwo[16]; char xor[17]; strcpy(plainone, “PlainOne”); strcpy(plaintwo, “PlainTwo”); int i=0; for(i=0; i<strlen(plainone);i++) xor[i] ^= (char)(plainone[i] ^ plaintwo[i]); printf("PlainText One: %s\nPlainText Two: %s\n\none^two: %s\n", plainone, plaintwo, xor); return 0; } 我的输出是: $ ./a.out PlainText One: PlainOne PlainText Two: PlainTwo one^two: 为什么xor数组不能读作什么?

C中命令行参数`argv`的类型是什么?

我正在阅读C Primer Plus中关于命令行参数argv一节,我很难理解这句话。 它说, 程序将命令行字符串存储在内存中,并将每个字符串的地址存储在指针数组中。 该数组的地址存储在第二个参数中。 按照惯例,指向指针的指针称为argv ,用于参数值。 这是否意味着命令行字符串作为指向char数组的指针数组存储在内存中?

在C中对数组实现一个通用的“map”函数

我在数组上实现通用的“map”函数时遇到了困难。 我从以下草案开始: void MapArray(void * src, void * dest, void * (f)(void *), size_t n, size_t elem) { unsigned int i = 0, j = 0; void * temp = malloc(elem); for(i = 0; i<n, i++) { temp = (f)((char *) src) + i)); for(j = 0; j < elem; j++) { *(((char *) dest) […]

malloc 2Darrays的另一种方式?

我想使用malloc声明一个2d数组。 在互联网上查找时,所有网站都会声明一个int **指针,然后使用malloc首先将各个指针分配给1d数组,然后再次使用malloc为单个int分配空间。 我怀疑的是,以这种方式声明的数组不会将其元素保存在连续的内存地址中。 以下方式仅使用一个malloc语句并动态分配2d数组,并且所有地址都是连续的。 所以不应该以下是动态分配2d数组的正确方法吗? #include int main(){ int (*p)[2] = malloc(3 * sizeof *p); int i; int j; //All addresses printed here are contiguous for(i=0; i<3; i++){ for(j=0; j<2; j++){ printf("%d\t", &p[i][j]); } printf("\n"); } }

双指针和指针数组之间的区别

在普通的c / c ++程序中,我们将main函数编写为 int main(int c, char **argv) 要么 int main(int c, char *argv[]) 这里argv表示一个指针数组,但我们甚至用**表示双指针(指针指针)。 例如: char p,*q,**r; q=&p; r=&q; 这里r是双指针而不是指针数组。 任何人都可以解释这个区别吗?

使用n 的真正用途是什么?

我是C的新手,我遇到了这样的代码: int n[10]; if(c>=’0′ && c<='9') ++n[c-'0'] 在if循环中为什么我们必须使用0左右的单引号,是什么意思,我们为什么不能立即将0定义为整数? 在第二行代码++n[c-‘0’] ,使用像这样的数组是什么意思,为什么我们需要减去0 (再次为什么在这个上下文中使用单引号?)来自c在数组索引中? 如果我喜欢这个n[c-‘0’] ,索引操作( c-‘0’ )的结果将是一个字符还是整数? 鉴于任何人都可以说我,这个arrays的真正用途是什么,有什么缺点呢? 提前致谢。

在C代码中将数组归零

可能重复: 如何在没有循环的情况下将数组初始化为C语言? 如何在C中初始化数组 如何在不使用for或任何其他循环的情况下将已知大小的数组归零? 例如: arr[20] = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; 这是漫长的道路……我需要它的简短方法。

使用{0},{0,}进行数组初始化?

说我想初始化myArray char myArray[MAX] = {0}; char myArray[MAX] = {0,}; char myArray[MAX]; memset(myArray, 0, MAX); 它们是否相同或优先于另一个? 谢谢