还有哪些语言可以通过指针操作来制作数组?

时间:2012-04-23 18:44:55

标签: c++ arrays recursion traversal

我们在C ++类中编写了以下递归函数。

bool contains(int arr[], int n, int val){
  if(n == 0) return false;          // Escape clause
  if(arr[0] == val) return true;  // Second escape clause
  return contains(arr+1, n-1, val);
}

我的教授说C / C ++ / Assembler是唯一支持这种数组遍历的主流语言。通过更改指针地址,还有哪些其他语言允许进行此类搜索?

1 个答案:

答案 0 :(得分:2)

支持数组上的数字索引的所有语言都适用于这种通用算法。它与指针操作无关。

对于C中基于字符串的算法,通常会利用指针操作。例如,可以按如下方式实现strlen

size_t strlen(char* pValue) {
  char* pStart = pValue;
  while (*pValue != '\0') {
    pValue++;
  }
  return pValue - pStart;
}

此代码在char[]char*输入上同样有效。这种类型的指针操作实际上仅限于以这种方式公开指针和公开数组的语言。

但这并不仅限于C / C ++ / Assembler。它也可以用C#

来完成