指针和数组
我可不可以将str理解成既是一个指针,又是一个数组,所以可以在for循环中的printf那一行,转化说明%c相对应的,才可以写成str,进行访问用指针定义的数组。求助,大佬!!! 在这一题是可以的。当一个指针指向一个数组时,在某一层面它们是相等的。 str理解成既是一个指针,又是一个数组
str本身就是一个语法糖,这个写法的本质其实就是一个指针。他其实就是*(str+i) 来看看代码 {:10_256:} 本帖最后由 番杰 于 2021-11-19 17:58 编辑
你这理解也算是能自洽,
但是str[ i ]这种写法是有理可据的,
str[ i ]这种写法是一个语法糖(Syntactic sugar),具体可以看:什么是语法糖
就相当于*(str+i),就是对(str+i)进行解引用;
如果你指针这儿学的不错,那到这儿,应该也就能解答你的疑惑了,
但是,我还是说一下吧:
函数开始的时候,char *str = "i love fishc.com!"
这个就是定义里一个指针str,它指向的是"i love fishc.com!"这个字符串的首地址,同时也就是‘ i ’的地址,
让我们来假设,字符串的首地址为0,所以此时str指向地址0。
然后接着看for循环;
第一次 :i= 0时。打印str的值,前面已经说了,它是一个语法糖,相当于*(str+0);刚才我们也假设了str指向的也是0,带入就有了*(0+0),所以相当于对地址0进行解引用,所以他的值就是‘ i ’。
第二次 :i = 1时,同理str,相到于*(0+1),也就是对地址1进行解引用,所以他的值就是‘空格 ’。
后面每一次的一样,依次打印这个字符串,直到把这个字符串都打印完成,退出for循环。
结束函数。
页:
[1]