char20chinabeijingp=a;printfsp;中为什么输出chinachar20chinabeijingp=a;printfsp+1;为什么输出hinachar20chinabeijingp=a;printfsp+20;为什么输出Beijing因为越界还是因为什么这个问题详细举例说明char20chinabeijingp=a;printfsp+10;为什么输出空白
在这段代码中,char[][20]{"china","beijing"}是一个二维字符数组,存储了两个字符串"china"和"beijing"。而*p=a;将指针p指向数组a的第一个元素。
-
printf("%s",p);中,%s是格式化输出字符串的占位符,p是指向字符串的指针,所以输出的是p指向的字符串"china"。
-
printf("%s",p+1);中,p+1是将指针p向后移动一个元素的位置,也就是指向数组a的第二个元素。所以输出的是p+1指向的字符串"hina"。
-
printf("%s",p+20);中,p+20是将指针p向后移动20个元素的位置,超出了数组a的范围,这是一种越界访问数组的情况。由于数组a后面的内存空间可能被其他变量占用,所以输出结果是不确定的,可能是"Beijing",也可能是其他的值。
-
printf("%s",p+10);中,p+10是将指针p向后移动10个元素的位置,超过了数组a的范围,也是一种越界访问数组的情况。由于数组a后面的内存空间可能被其他变量占用,所以输出结果是不确定的,可能是空白或其他的值。
原文地址: https://www.cveoy.top/t/topic/iMi8 著作权归作者所有。请勿转载和采集!