朗读者外国人做的汉字网站,网站制作需求分析,网站开发方式包括,高端品牌网站设计第一题 1、设有定义#xff1a; char *p; #xff0c;以下选项中不能正确将字符串赋值给字符型指针 p 的语句是#xff08;#xff09; 【多选】 A: pgetchar(); B: scanf(%s,p); C: char s[]china; ps; D: *pchina; 答案与解析 A B D…第一题 1、设有定义 char *p; 以下选项中不能正确将字符串赋值给字符型指针 p 的语句是 【多选】 A: pgetchar(); B: scanf(%s,p); C: char s[]china; ps; D: *pchina; 答案与解析 A B D A错误getchar是从缓冲区拿一个字符赋值过去无法赋值字符串除非加循环并且getchar的返回值为int类型也不匹配 B错误scanf会遇到空格停止若赋值一个带有空格的字符串则无法正确赋值并且p没有分配内存强行输入会导致野指针 C正确 D错误类型错误 第二题 2、下述程序的输出是 #includestdio.h
int main()
{static char *s[] {black, white, pink, violet};char **ptr[] {s3, s2, s1, s};char ***p;p ptr;p;printf(%s, **p1);return 0;
} A: ink B: pink C: white D: hite 答案与解析 A 第三题 3、若有定义语句: char s[3][10]char (*k)[3]char* p; 则以下赋值语句错误的是 1.p s;
2.p k;
3.p s[0];
4.k s; A: 124 B: 1234 C: 12 D: 234 答案与解析 A 在没有强制类型转换的情况下只有类型完全相同的指针才能相互赋值 【p s】错误s是一个二维数组名代表的是第一行的地址是一个数组指针类型而p只是一个char*类型无法赋值 【p k】错误同上 【p s[0]】正确p类型为char*s[0]表示第一行首元素的地址类型为char* 【k s】正确都是数组指针类型但s为char (*) [10] k为 char (*) [3]类型不同错误 第四题 4、假设 sizeof(void *) 为4 sizeof(char) 为1那么对于 char str[sizeof(ab)] sizeof(str) 的值是 A: 2 B: 3 C: 4 D: 代码无法编译 答案与解析 B 我们想知道sizeof(str)的值因为str是数组名sizeof(str)表示的是整个数组的大小所以我们必须知道数组有几个元素 char str[sizeof(ab)]求数组元素个数 - 求sizeof(ab) 而 sizeof里面求的是类型所以ab的类型为 const char [3] 这里是3的原因ab 字符串末尾有个隐藏的 \0 所以sizeof(ab) 3 那char str[sizeof(ab)] char str[3] 所以sizeof(str) 3; 第五题 5、有如下程序段则对函数 fun 的调用语句正确的是【多选】 char fun(char *);
int main()
{char *s one;char a[5] {0};char (*f1)(char *) fun;char ch;return 0;
} A: *f1(a); B: f1(*s); C: f1(ch); D: ch *f1(s);要改成(*f1)(s)才正确 答案与解析 CD 使用(*f1)(s)与f1(s)效果是相同的 首先明确f1为一个函数指针相当于fun那 A*f1(a)a是取出整个数组的地址类型为char (*) [5]与参数类型不匹配错误 Bf1(*s) *s类型为char类型类型不匹配错误 Cf1(ch)正确 D因为()的优先级比*高所以会返回char类型但是char又被解引用则错误