分析下面的C程序,指出错误代码(或运行异常代码)所在的行号。
[C程序]
行号
| 代码
|
1 2 3 4 5 6 7 8 9 lO 11 12 | #include <stdio.h> #include <string.h> int main () char *p, arrChar[100]="testing"; arrChar="test"; p="testing"; *p=’0’; p=arrChar+1; printf("%d\\t%d\\n",sizeof(arrChar),Strlen(arrChar)); printf("%d\\t%d\\n",sizeof(char *),strlen(p)); return 0; |
参考答案:5,或alTChar="test"
7,或*p=’0’;
解析:本题考查C程序编写和调试中常见错误的识别和改正。
在C语言中,指针表示内存单元的地址,指针变量可用于存储指针类型的值,即内存单元的地址值。变量的值在程序运行过程中允许修改,而常量则不允许修改。可以令指针指向一个变量或常量,但若指针指向一个常量,则不允许通过指针修改该常量。
第5行代码有错,即对数组名arrChar的赋值处理是错误的。在C语言中,数组名是表示数组空间首地址的指针常量,程序中不允许对常量赋值。
第7行代码有错,在第6行中,通过p="testing"使指针变量指向了一个字符串常量,此后可以再令指针p指向其他字符或字符串,但不能通过指针修改字符串常量的内容。