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

指针和变量赋值基本
EN

Stack Overflow用户
提问于 2022-04-27 16:24:06
回答 2查看 41关注 0票数 0

我试图理解指针的基本原理,并编写了以下代码:

代码语言:javascript
运行
复制
int c = 3;
int try(int a){
  ++a;
  return 0;
}
int main(){
  try(c);
  printf("%d\n",c);
  return 0;
}

如何使用指针打印4?我知道我可以这样做:

代码语言:javascript
运行
复制
int c = 3;
int try(int a){
  ++a;
  return a;
}
int main(){
  c = try(c);
  printf("%d\n",c);
  return 0;
}

但我真的很想学习如何通过指针传递这些值。

此外,任何优秀的书籍推荐为坚实的C学习是永远欢迎。提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-27 16:34:10

这是如何做'c样式参考传递‘。

代码语言:javascript
运行
复制
int tryIt(int *a){
  ++(*a);
}
int main(){
  int c = 3;
  tryIt(&c);
  printf("%d\n",c);
  return 0;
}

将指针传递给变量,并在函数中取消对指针的引用。该函数有效地超出了其作用域来修改传递的变量。

请注意,我将c移到main中。在您的原始代码中,“try”可以修改c本身,因为它在全局范围内。

把“尝试”改为“tryIt”--因为这看起来很奇怪

票数 0
EN

Stack Overflow用户

发布于 2022-04-27 16:30:52

代码语言:javascript
运行
复制
int c = 3;


void pass_by_ref(int *a)  // Take a Pointer to an integer variable
{
    ++(*a);               // Increment the value stored at that pointer.
}

int main(){
  pass_by_ref(&c);        // Pass the address of the variable to change
  printf("%d\n",c);
  return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72032260

复制
相关文章

相似问题

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