首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C基本面-变量和指针有问题

C基本面-变量和指针有问题
EN

Stack Overflow用户
提问于 2013-12-29 08:49:30
回答 6查看 303关注 0票数 3

我在学习C上遇到了一些困难,我真的没有别的地方可以寻求建议了。我来自OOP语言的列表,比如JavaScript和主要的Python,所以C是一个很大的变化,为了学习基本面,我遇到了很多困难。我最初是从Zed的“艰难地学习C”开始的,但他并没有真正在书中教任何东西。是的,他让你写了很多代码,并改变了一些东西,但我并不是在学习为什么代码能工作,这只会导致更多的混乱,因为这些例子都是复杂的。

的主要问题是变量和指针之间的区别(我认为这是非常不同的,直到我在下面看到一些示例,这完全模糊了两者之间的界限)。

例如,,我理解声明和初始化一个名为aint和一个指针,p看起来如下所示:

代码语言:javascript
运行
复制
int a;
int *p;

a = 12;
p = &a;

让我困惑的是,当您声明看起来像指针的变量时,但是实际上根本不是指针(或者它们是?)。例如:

代码语言:javascript
运行
复制
char *string = "This is a string";
printf("%s\n", string);

当定义和初始化string时,它是什么?是指针吗?如果是的话,为什么在printf函数中打印它时不取消引用呢?有很多这样的例子让我感到困惑。

我遇到的另一个毫无意义的例子:

代码语言:javascript
运行
复制
int i;
scanf("%d", &i);

这个函数是如何更新整数i的值的,当符号应该引用变量在内存中的位置而不是值的时候?数组和结构变得更加复杂,这就是我停止的地方,并决定我需要找到一些建议。

我真的觉得发布这样一个问题很尴尬,但每个人都是从某个地方开始的。这些基本原理我知道我需要能够理解才能继续前进,但当我看到与我刚刚学到的东西相矛盾的代码示例时,我很难理解它。我知道这是一个非常普遍的问题,但我希望你们中的一些人可以解释这些基本知识,或者为我指明一个更好地学习/理解这一点的方向。我所见过的大多数视频教程都过于笼统,与在线的文本教程一样,它们会告诉你如何做一些事情,但不要解释,这会导致一些严重的问题。

EN

Stack Overflow用户

发布于 2013-12-29 08:55:24

阅读一些关于指针的基本知识如何?

http://cslibrary.stanford.edu/106/

我将在下面回答你们的问题:

让我困惑的是,当您声明看起来像指针的变量时,但是实际上根本不是指针(或者它们是?)。例如: char *string =“这是字符串”;printf(“%s\n”,string);

是的!这是个炭指针。

这个函数是如何更新整数i的值的,当符号应该引用变量在内存中的位置而不是值的时候?

这取决于函数的签名。如果您查看scanf接受的作为参数列表的内容,您将清楚地看到。

票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20823542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档