java - c和java在简单数组函数上的区别?
问题描述
除了一些明显的差异,如差异 [] 位置,java 中的数组和 c 中的数组之间是否有任何根本区别?
我写了一个小程序来计算总和来比较它们。
//java
public static int arraySum(int[] a) {
int sum = 0;
for (int i = 0; i < a.length ; i++) {
sum = sum + a[i];
}
return sum;
}
public static void main(String[] args) {
int[] tryArray = {1,2,3,4,5};
System.out.println(arraySum(tryArray));
}
//c
int sum_array(int a[], int len) {
int sum = 0;
for (int i = 0; i < len; ++i) {
sum += a[i];
}
return sum;
}
int main(void) {
int my_array[5] = {1,2,3,4,5};
trace_int(sum_array(my_array, 5)); // any ways to remove the 5(length) from the parameter?
}
另外,如果我在 c 中使用 char 数组,它看起来像 java 中的字符串?char posi_string[3] = "str"
我可以使用这种方法来操作 c 中的字符串吗?
解决方案
有什么方法可以从参数中删除长度?
不,当您将数组传递给 C 中的函数时,它不再被假定为数组而是指针。因为它是一个指针,你不能再用它来评估它的大小sizeof(arr) / sizeof(arr[0])
——因此,你只需要传递另一个参数,例如,size
告诉函数数组的大小。
如果我在 C 中使用 char 数组,它看起来像 Java 中的字符串吗?
不, Java 有一个String
内置代码丰富的类。在 C 中不太可能,char
是一种原始数据类型,它没有任何功能,您需要手动创建一个。
推荐阅读
- php - 如何使用 html 表显示数据库中的数据
- laravel - laravel 控制台中的 SQS 队列
- windows - 有没有办法使用 python 获取活动 Windows 资源管理器的 URL
- permissions - 在 actions.intent.PERMISSION 中没有听到 conv.ask('...'') 的讲话
- c# - Implementing DataTables using EF. No results showing, no errors
- php - PHP 未捕获错误:在 null 上调用成员函数 userRole()
- python - 创建新记录时如何根据其他字段更改字段只读值?
- r - 如何在闪亮的网络应用程序中从不同文件夹上传多个文件?
- sql - T-SQL解析XML给出空白值
- webpack - VuePress:如何导入 css 框架(basscss)