Tag: 数组

什么`int const a `真正意味着什么?

考虑以下数组声明: int const a[5]; 从语言的语义角度来看,它是否完全等同于const int a[5] ? 假设是这种情况,两个声明基本上都会读作“ a是5个常量整数的数组 ”。 读取第一个声明的另一种方法是“ a是一个5个整数的常量数组 ”。 显然,这两个陈述逻辑上都暗示整个数组是不变的; 如果一个数组由5个常量整数组成,则整个数组是常量。 或者,如果整个数组是常量,那么它的所有值也是常量。 我知道“常量数组”的概念有点无意义,因为数组不是可修改的左值(也就是说,它们不能出现在赋值的左侧)。 但是,在这两种声明会产生不同行为的情况下是否存在? ( Cdecl.org拒绝将第一个声明作为语法错误,而大多数当前编译器都接受它。) 编辑: 链接的副本询问const的顺序是否对普通变量很重要。 对于数组,它有点混乱,所以我不认为这是重复的。

这个C程序有什么问题来计算每个元音的出现次数?

问题: 编写一个C程序,提示用户输入由ENTER键终止的字符串(即’\ n’),然后计算字符串中每个元音的出现总数。 您的程序应使用以下准则: •您的程序应声明一个包含5个整数计数器的数组,即计数器。 •使用循环,程序应将数组的每个成员初始化为0。 •然后检查字符串中的每个字符以查看它是否是元音,即“a”,“e”,“i”,“o”或“u”。 在这种情况下,相应的计数器递增。 例如,如果读取’a’,则计数器[0]递增,如果读取’i’则递增计数器[2],依此类推。 •输入的字符可以是小写或大写。 •您的程序应使用循环打印出5个计数器的内容。 •最后,您的程序应该打印字符串中的元音总数。 结果应如下所示:请输入由ENTER键终止的字符串: “棕色的狐狸跳过懒狗” counter[0] = 1 counter[1] = 4 counter[2] = 0 counter[3] = 4 counter[4] = 1 元音总数= 10 我的代码: #include main(){ int counter[5]; int c, i; for(i = 0; i < 5; i++) counter[i] = 0; printf("Please enter a string terminated by […]

将*&数组分配给指针

以下摘录来自Harbinson,Steele C:A Reference Manual(第5版) 。 根据这本书, p的两个任务是等价的。 7.5.6地址运营商 int a[10], *p; p = a; p = *&a; 然而,根据C faq Question 6.12, a是指向int的类型指针,而&a是指向int数组的类型指针。 所以我们应该在第二个赋值p = *&a得到一个类型错误,因为我们试图将一个int数组赋给一个指针。 为什么赋值p = *&a正确的?

如何处理ruby Fiddle中的数组指针

我试图从Ruby FFI切换到Fiddle,现在它是Ruby std lib的一部分。 它虽然没有文档,但我很难弄清楚如何处理数组和指针。 特别是,如何将Ciddle接口写入C函数,如下所示: void my_func(double *, size_t len) 将它映射到Ruby非常简单: module Test extend Fiddle::Importer dlload ‘./lib/libTest.dylib’ extern ‘void my_func(double *, size_t)’ end 但是,我如何构建一个指向数组的指针,作为第一个参数传递? 谢谢!

从用户输入密码并检查它是否有字符,字母和数字

我怀疑的是,如果我输入填充数组的密码,程序运行正常。 但是,如果我输入密码,例如“apple25”,我认为它将数组中的空格计为字符,甚至将“apple25”声明为有效密码。 我该如何防止这种情况发生? 它是否将字符串终止符计为char ? 因为即使“AAPPLLEE2”也是有效密码。 #include #include #include #include #define TRUE 1 #define FALSE 0 int main() { char arr[10]; printf(“Enter a password. \n”); scanf(“%s”,arr ); // printf(arr); char ch; int i; int alp=0, dig=0, c=0; for (i=0; i=1&&dig>=1&&c>=1) { printf(“Valid Password”); } else{ printf(“Invalid Password”); } return 0; }

如何在C中扫描未知数量的整数到数组?

我知道我可以使用scanf一定数量的数字,例如3个数字 scanf(“%d %d %d”,array[0],array[1],array[2]); 但如果我不知道在输入(NOT EOF)之前输入数组有多少数字(整数,不是浮点数),我怎么能扫描呢? 例如 input : 12 43 23(enter) –> array[0]=12, array[1]=43, array[2]=23 input : 10 20 30 40 50(enter) –> array[0]=10, array[1]=20, array[2]=30, array[3]=40, array[4]= 50 etc.. 它是关于如何将数字输入整数数组。 如果可能的话,我想将它保存到2维数组中 input : 12 43 23(enter) –> array[0][0]=12, array[0][1]=43, array[0][2]=23 input : 10 20 30 40 50(enter) –> array[1][0]=10, array[1][1]=20, array[1][2]=30, array[1][3]=40, array[1][4]= […]

sizeof()如何通过引用参数传递

我传递了一个数组来运行,并试图找到数组的长度。 但结果没有预料到。 有人可以解释一下吗? int main() { int array[10]={0}; func(array); return 0; } void func(int arr[]) { printf(“length of an array is %d “,(sizeof(arr)/sizeof(arr[0])); } 它给出了答案2.当我在main函数中尝试相同的操作时,它工作正常(答案是10)。 //在linux中使用gcc编译器

将指针返回到数组的函数

我设法在C使用可变长度数组,我现在有以下内容: #include #include int (*foo(size_t row, size_t col))[3]; int main(void){ size_t row, col; printf(“Give the ROW: “); if ( scanf(“%zu”,&row) != 1){ printf(“Error, scanf ROW\n”); exit(1); } printf(“Give the COL: “); if ( scanf(“%zu”,&col) != 1){ printf(“Error, scanf COL\n”); exit(2); } int (*arr)[col] = foo(row, col); for ( size_t i = 0; i < row; […]

C动态中的字符数组是?

我在C中编写了一个简单的程序。一个程序输入一个String并显示它和长度。 #include int main() { char a[4]; printf(“Enter the name : “); gets(a); printf(“\nThe name enterd is : %s”,a); printf(“\nLength of string is : %d”,strlen(a)); getch(); return 0; } 该程序不包含警告或错误。 在运行时,我输入值“ melwinsunny ”作为输入。 没有错误,显示的结果是: Enter the name : melwinsunny The name entered is : melwinsunny length of string is : 11 为什么会这样? 我已经声明了长度为4的字符数组( char a […]

C中未定义长度的数组

我正在看我的教科书中的一个练习:创建一个C程序,从键盘上取一个长度为“N”的数组。 问题是:在C语言中,如何创建未定义的长度数组? 谢谢你们。