小编And*_*Lin的帖子

这是 C 中的按引用调用还是按值调用?

我正在读一本由 Brian W. Kernighan 和 Dennis M. Ritchie 撰写的《c 编程语言》一书。

本书列出了下面的代码

void strcpy(char *s, char *t){
    while((*s = *t) != '\0'){
        s++;
        t++;
    }
}
Run Code Online (Sandbox Code Playgroud)

并说:

因为参数是按值传递的,所以 strcpy 可以以任何它喜欢的方式使用参数 st

我不同意这一点。为什么上面的参数是按值传递的?

根据另一本书《C 如何编程》:

在 C 中,您使用指针和间接运算符来模拟引用调用。当调用带有应修改参数的函数时,将传递参数的地址。

从后一个角度来看,它绝对是按引用调用。

请告诉我哪种方法是正确的以及为什么,谢谢!

顺便说一句,赋值后*s = *t,与哪一个进行比较'\0'*s或者*t

c kernighan-and-ritchie pass-by-reference call-by-value

3
推荐指数
1
解决办法
1804
查看次数

在 VS 代码中包含路径和无效转义字符

下图中第 7 行的红色下划线文本被检测为在 string 中存在错误无效转义字符

该字符串是文件夹路径。为什么无效,该怎么办?

在此输入图像描述

escaping character visual-studio-code

3
推荐指数
2
解决办法
3万
查看次数

这个表达式怎么读?

(long)&((FLASH_CONF_STRUCT*)0)->vlan
Run Code Online (Sandbox Code Playgroud)

FLASH_CONF_STRUCT是结构类型,并且vlan是该结构的成员。

这个表达式怎么拼?

c flash struct typecast-operator

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