推荐答案
测试一下
题目
5.1数组和 printf ................................ ................................ ................................ ......…
参考答案与知识点
参考答案
数组名在大多数表达式中会被编译器视为指向数组首元素的指针,但有两个例外:sizeof(数组名)返回整个数组的字节数,&数组名返回指向整个数组的指针(类型为数组指针)。printf函数使用%s格式符时,需要传入一个指向字符数组首地址的指针,该字符数组必须以空字符'\0'结束;否则会导致printf读取越界,输出乱码或崩溃。常见错误包括:1)用数组名直接参与指针运算时混淆了指针移动的步长;2)用sizeof计算字符串长度时包含末尾的'\0',而strlen不包含;3)将数组作为函数参数传递时,数组名退化为指向首元素的指针,sizeof在函数内得到的是指针大小,而非数组大小。数组和指针在访问元素上可互换,但本质上数组是一段连续内存空间,指针是一个变量用于存放地址。printf输出时若数组未初始化或缺少结束符,可能引发未定义行为。易错点:误以为数组名就是指针常量,实则数组名是左值但不是可修改的左值;传递二维数组时,必须指明第二维大小;使用scanf读入字符串时同样要注意越界和结束符。
涉及知识点
- 数组名与指针的区别
- printf %s 与字符串结束符
- sizeof 与 strlen 的差异
- 数组作为函数参数退化
- 二维数组传参的维度要求