黑马程序员技术交流社区

标题: 关于二维数组问题 [打印本页]

作者: z82454642    时间: 2014-3-4 16:03
标题: 关于二维数组问题
本帖最后由 z82454642 于 2014-3-11 23:34 编辑

有一个字符串数组
str    表示第i+1个字符串
str[j] 表示第i+1个字符串的第j+1个字符

str+j 表示什么意思呢
是表示str[i+j]么?

作者: apple_victor    时间: 2014-3-4 16:28
本帖最后由 apple_victor 于 2014-3-4 16:31 编辑


作者: apple_victor    时间: 2014-3-4 16:31
首先回答你,str[i]+j不是表示str[i+j],两者没有必然的联系
str[i]+j:str[i]表示字符串组str[i]第i+1个值,而str[i]+j只是表示str[i]字符串和j合并起来形成的一个新字符串。
作者: 脸皮猴    时间: 2014-3-4 21:46
本帖最后由 脸皮猴 于 2014-3-4 21:59 编辑


作者: 脸皮猴    时间: 2014-3-4 22:01



str[i]+j 表示什么意思呢
假如你的str是一个二维字符串数组,那么str[i]其实相当于存放你第i+1个字符串地址的一个指针!所以 str[i]+j 代表的是str[i]这个指针变量向后移动了j,也是指向了一个字符串。具体是指向哪里,要看你的j的值,要是超出了你的数组范围那么就是指向未知的字符串了。
假如你的str是一个一维字符串数组那么,str[i]+j代表str这个字符串的第i+1个字符的ASC码值和j的和组成的一个新字符。比如你的str是一个字符‘A’, j = 32,那么str[i]+j就等于‘A’的ASC码值 +32 = 97 ,而 ‘a’的ASC码值就等于97,那么str+j 就是新的字符 ‘a’;
而str[i+j]代表什么勒?
假如你的str是一个二维字符串数组,那么str[i+j]代表的也是一个指向一个字符串的指针,假如没有超出数组范围,那么这个指针就指向你的第i+j+1个字符串!(前提是不超出你的数组范围)
假如你的str是一个一维字符串数组,那么str[i+j]代表的是你的字符串数组str的第i+j+1个字符元素(前提是不超出你的数组范围)


所以!str[i]+j 和str[i+j]完全不是一个意思!不管你的数组是一维还是二维!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2