小编Ins*_*ane的帖子

指针是否被认为是在C中通过引用调用的方法?

在我大学的C编程课程中,教授及其后来的书在引用C中的指针时使用了术语调用或通过引用传递.

我的教授称之为"参考函数调用"的一个例子:

int sum(int *a, int *b);
Run Code Online (Sandbox Code Playgroud)

我的教授称之为"价值函数呼叫"的一个例子:

int sum(int a, int b);
Run Code Online (Sandbox Code Playgroud)

读过 C不支持通过引用调用.根据我的理解,指针通过值传递.

基本上,说指针是C通过引用传递的方式是不正确的吗?说你不能通过C中的引用传递但是可以使用指针替代它会更正确吗?


2015年11月11日更新

从我的问题起源的方式来看,我认为术语的争论已经产生,实际上我看到了两个具体的区别.

  • pass-by-reference(主要用于今天的术语):C++等语言中使用的特定术语
  • pass-by-reference(我的教授用来解释指针的范例):在C++之类的语言开发之前使用的一般术语,因此在术语被重写之前

在阅读了@Haris的更新答案之后,为什么这不是那么黑白,这是有道理的.

c pointers pass-by-reference

65
推荐指数
7
解决办法
6566
查看次数

防止IntelliJ删除单个语句方法的换行符?

有时IntelliJ将采用单一语句方法并将它们放在同一行,如下所示:

如果我点击任一支架,它将变回:

这个问题不是争论两者中哪一个更好 - 我想知道如何解决这个问题.我梳理了IntelliJ偏好,似乎找不到任何东西,在这里搜索和谷歌没有提出我想要的东西.

java intellij-idea

4
推荐指数
1
解决办法
69
查看次数

用open和fdopen打开文件后程序挂起

我使用的是open()O_RDWR,然后使用描述符fdopen()"r+".我检查文件是否首先存在access(),并检查open()返回-1然后检查该FILE *fp集合fdopen()不是NULL.

现在,每当我使用任何功能,如fgets()fgetc()fp该程序挂在我的终端.我没有编译器警告.有任何想法吗?

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

int main(int argc, char **argv) {
    char buffer[512];
    int file_descriptor;
    FILE *file;

    if (argc != 2) {
        puts("ERROR: Missing argument");
        exit(0);
    }
    else if (access(argv[1], F_OK) == -1) { // Check if file exists
        puts("ERROR: File does not exist");
        exit(0);
    } else if …
Run Code Online (Sandbox Code Playgroud)

c

4
推荐指数
2
解决办法
796
查看次数

put或putchar更适合打印换行吗?

打印换行符更好(在性能和最佳实践中):

putchar('\n') 要么 puts("")

据我所知,putchar输出一个字符并puts输出一串字符.忘掉了printf.

我倾向于使用puts,因为它是短,但这样做("")只是感觉不对.

哪个更快更好?

c newline stdio

1
推荐指数
2
解决办法
332
查看次数

标签 统计

c ×3

intellij-idea ×1

java ×1

newline ×1

pass-by-reference ×1

pointers ×1

stdio ×1