c语言指针c语言字符串指针输入?

student这个c语言字符串指针的每个字符嘟有一个地址最后一个是ASCII码值为0的空字符\0。

p="student"; 这句的作用就是把student这个c语言字符串指针的首个字符s的地址赋给了p

printf中%s的作用就是从该地址(就昰后面你写的p存储的地址)开始输出c语言字符串指针,知道遇见\0为止


}

我用vs2005执行结果是“”

上网查了,有一篇文章“作者:Lemon_jay
原文: ”这篇文章意思是这是将c语言字符串指针指针的值的十进制形式输出,但%c要求输出字符将地址值转换为對应的字符输出,网上又有讲大于127的整型用%c输出要截取低位

我的理解是:string类型是char *,占内存是四个字节值是16进制数,我调试string是0x十进制昰4282296,那么是直接把0x去截取低位b8还是把string先转十进制数4282296,变成整型常量再用int存储,而整型存储又是以补码存放(当然这个正数补码就是原碼)再截低位b

b8十进制是184,书上ASCII码值中有从0到127这个184怎么办,为什么输出是“”,网上好像讲标准ASCII 码也叫基础ASCII码使用7 位二进制数,第1位二进制为0而这里184二进制是,第一位是1

还有,我把上面的数十进制4282296以及把它加1加2(即2298)这样输出

这样是不是把这两个整型常量先用int存储,分别是0x和0x004157ba再截取低位,即b9和ba,十进制为185,186还是不在127范围内,二进制为11010第一位还是1,这是不是说截了低位也就是只有8位二进制数后苐一位是1输出都是“?”

网上又有讲将300,400输出,也就是如下:

300结果是“”,400结果是“”,300二进制是400二进制是,这个又是不是这样:300400都是整型常量,都被内存以1100和0000存储再截取低位,300为400为,而十进制为44%c输出就是“,”第一位是1,输出就是就是“?”?
希望各位大神能详细指教万分感谢·

}

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}

我要回帖

更多关于 c语言字符串指针 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信