chinabeijingp=a;printfsp;中为什么输出chinachinabeijingp=a;printfsp+1;为什么输出hinachinabeijingp=a;printfsp+20;为什么输出Beijing详细举例说明二维字符串与指针加减的关系是按字节加减还是按字符个数加减
在C语言中,二维字符串实际上是由多个字符数组组成的,每个字符数组表示一个字符串。当我们定义一个二维字符串数组时,实际上是在内存中连续存储了多个字符数组。
对于第一个问题:{"china","beijing"},*p=a; printf("%s",p);中,为什么输出china 在这个例子中,p指向a数组的第一个字符数组,即"china"。当我们使用"%s"格式化输出时,会输出从p指向的位置开始的字符串,直到遇到字符串结束符'\0'为止。因此,输出的结果是"china"。
对于第二个问题:{"china","beijing"},*p=a; printf("%s",p+1);为什么输出hina 在这个例子中,p指向a数组的第一个字符数组,即"china"。当我们对p进行加1操作时,实际上是将p指针向后移动了一个字符的大小。因为p是一个字符型指针,所以移动的单位是一个字符的大小。因此,p+1指向了"china"字符串中的第二个字符'h'。当我们使用"%s"格式化输出时,会输出从p指向的位置开始的字符串,直到遇到字符串结束符'\0'为止。因此,输出的结果是"hina"。
对于第三个问题:{"china","beijing"},*p=a; printf("%s",p+20);为什么输出Beijing 在这个例子中,p指向a数组的第一个字符数组,即"china"。当我们对p进行加20操作时,实际上是将p指针向后移动了20个字符的大小。因为p是一个字符型指针,所以移动的单位是一个字符的大小。在这个例子中,移动20个字符的大小正好越过了"china"字符串和它的结束符'\0'。因此,p+20指向了a数组的第二个字符数组,即"beijing"。当我们使用"%s"格式化输出时,会输出从p指向的位置开始的字符串,直到遇到字符串结束符'\0'为止。因此,输出的结果是"Beijing"。
综上所述,二维字符串与指针加减操作是按照字符个数加减的。指针加1时,移动的单位是一个字符的大小
原文地址: https://www.cveoy.top/t/topic/iMiA 著作权归作者所有。请勿转载和采集!