我在学习C上遇到了一些困难,我真的没有别的地方可以寻求建议了。我来自OOP语言的列表,比如JavaScript和主要的Python,所以C是一个很大的变化,为了学习基本面,我遇到了很多困难。我最初是从Zed的“艰难地学习C”开始的,但他并没有真正在书中教任何东西。是的,他让你写了很多代码,并改变了一些东西,但我并不是在学习为什么代码能工作,这只会导致更多的混乱,因为这些例子都是复杂的。
的主要问题是变量和指针之间的区别(我认为这是非常不同的,直到我在下面看到一些示例,这完全模糊了两者之间的界限)。
例如,,我理解声明和初始化一个名为a的int和一个指针,p看起来如下所示:
int a;
int *p;
a = 12;
p = &a;让我困惑的是,当您声明看起来像指针的变量时,但是实际上根本不是指针(或者它们是?)。例如:
char *string = "This is a string";
printf("%s\n", string);当定义和初始化string时,它是什么?是指针吗?如果是的话,为什么在printf函数中打印它时不取消引用呢?有很多这样的例子让我感到困惑。
我遇到的另一个毫无意义的例子:
int i;
scanf("%d", &i);这个函数是如何更新整数i的值的,当符号应该引用变量在内存中的位置而不是值的时候?数组和结构变得更加复杂,这就是我停止的地方,并决定我需要找到一些建议。
我真的觉得发布这样一个问题很尴尬,但每个人都是从某个地方开始的。这些基本原理我知道我需要能够理解才能继续前进,但当我看到与我刚刚学到的东西相矛盾的代码示例时,我很难理解它。我知道这是一个非常普遍的问题,但我希望你们中的一些人可以解释这些基本知识,或者为我指明一个更好地学习/理解这一点的方向。我所见过的大多数视频教程都过于笼统,与在线的文本教程一样,它们会告诉你如何做一些事情,但不要解释,这会导致一些严重的问题。
发布于 2013-12-29 08:55:24
阅读一些关于指针的基本知识如何?
http://cslibrary.stanford.edu/106/
我将在下面回答你们的问题:
让我困惑的是,当您声明看起来像指针的变量时,但是实际上根本不是指针(或者它们是?)。例如: char *string =“这是字符串”;printf(“%s\n”,string);
是的!这是个炭指针。
这个函数是如何更新整数
i的值的,当符号应该引用变量在内存中的位置而不是值的时候?
这取决于函数的签名。如果您查看scanf接受的作为参数列表的内容,您将清楚地看到。
https://stackoverflow.com/questions/20823542
复制相似问题