3195318731 发表于 2021-11-19 00:13:49

指针和数组

我可不可以将str理解成既是一个指针,又是一个数组,所以可以在for循环中的printf那一行,转化说明%c相对应的,才可以写成str,进行访问用指针定义的数组。
求助,大佬!!!

yzzc 发表于 2021-11-19 08:37:49

在这一题是可以的。当一个指针指向一个数组时,在某一层面它们是相等的。

wutianlong220 发表于 2021-11-19 10:09:19

str理解成既是一个指针,又是一个数组

str本身就是一个语法糖,这个写法的本质其实就是一个指针。他其实就是*(str+i)

tomok 发表于 2021-11-19 15:24:31

来看看代码

醉听风 发表于 2021-11-19 15:53:52

{:10_256:}

番杰 发表于 2021-11-19 17:54:46

本帖最后由 番杰 于 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]
查看完整版本: 指针和数组