一开始学,没有基础的话是不容易看懂,但是你要坚持,很多知识学习起来是循环递进,有相互补充说明的。很多一开始比较慢的知识学习到后面章节时候就会懂了,所以很多老师会说前面学习不会的可以先记下来,等你后面继续学习的时候会逐渐明白。

学习一门新知识的时候,一开始总是懵懵懂懂的,因为我们不知其所以然,等你继续深入学习和应用后就会知其所以然。
首先你要把学习编程语言的恐惧感排除掉。把基础理论学习清楚,树立面向对象思想,当你能把万物都能抽象成对象,就能入门了。
学习一门编程语言和学习一门人类语言都差不多,甚是更好学。编程语言有固定的语法,固定的模式。只要不好高骛远,多想多写,入门不难的。
我就是自学java几个月,然后上了培训班,工作了3年。我觉得学java,需要兴趣和毅力,缺一不可。java的学习不需要多高的智商。一定要有兴趣,愿意学习里面的各种技术,做到这些,就一定能学好。
最大难度可能会来自学Java会缺乏对更底层逻辑的抽象,而人往往因为定式会以Java使用的上层抽象硬套C语言的逻辑。学C的话Java的经验可以作为参考,上层的编程思路可以用,但是语言方面,假装自己没学过编程语言吧。
然后就是C语言因为异常古老所以某些设定相当扭曲,比如类型格式,函数指针。
再有就是语言设计出发点的问题,Java的规则很严格,C语言追求性能所以在规则上留了很多余地。Java只要能编译过的在语言层面一定是对的,C语言不是,比如i++ += i++ + ++i之类称为未定义行为的东西。
单说C语言的话,原则说C语言比Java简单得多。但C语言更贴近底层,所以更反直觉(当然也有一些祖传设计Bug的问题)。C语言好不好学可能主要在于你是不是够理性。