在下面使用指针数组的程序中存在一个错误,试分析这个程序,并上机运行,观察运行结果,找到这个错误,并分析出错的原因。 #include <stdio.h> void Print(char *arr[], int len); int main(void) { char *pArray[] = {"Fred","Barrey","Wilma","Betty"}; int num = sizeof(pArray) / sizeof(char); printf("Total string numbers = %d\n", num); Print(pArray, num); return 0; } void Print(char *arr[], int len) { int i; for (i=0; i<len; i++) { printf("%s,", arr[i]); } printf("\n"); }
时间: 2023-12-03 22:46:20 浏览: 578
C程序设计第三版常见错误ppt课件.ppt
这个程序的错误在于计算字符串数组中元素个数的方式。在主函数中,计算元素个数的代码是:
```c
int num = sizeof(pArray) / sizeof(char);
```
这里使用了 `sizeof(char)`,实际上一个字符占用的空间是1字节,因此这个计算的结果是字符串数组中元素的总字节数除以1,而不是元素的个数。因此,实际上 `num` 变量的值被赋为了4,而不是字符串数组中元素的个数。
修正这个错误的方法是将计算元素个数的代码修改为:
```c
int num = sizeof(pArray) / sizeof(pArray[0]);
```
这样就可以正确计算出字符串数组中元素的个数了。
阅读全文