- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这里是strCopy的一个实现
void strcopy2(char *dst, char const *src){
while ((*dst++ = *src++))
;
}
我们的教授要求我们在不使用指针的情况下重现这段代码,所以我想出了以下函数:
void strcopy(char dst[], char const src[]){
size_t i = 0;
while (dst[i] = src[i++])
;
}
它运行良好,但我意识到,在引擎盖下函数必须仍然使用指针,因为我们无处返回任何值。换句话说,我虽然最后一个函数会使用按值传递,但显然不是这样。那么在水下发生了什么,这两种方法实际上有什么区别吗?
最佳答案
不只是在幕后……dst
和 src
,尽管看起来很像,但实际上都是指针!参数列表中的 []
语法是语法糖(或者实际上是语法胡椒),但它在骗你;这些是实数的 char* dst
和 char const* src
。
8.3.5/5 [dcl.fct] 功能:
After determining the type of each parameter, any parameter of type “array of T” or of function type T is adjusted to be “pointer to T”.
关于c++ - 为什么我的 strCopy 实现有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40105746/
这个问题已经有答案了: I can use more memory than how much I've allocated with malloc(), why? (17 个回答) 已关闭 8 年前
void strcopy(char *src, char *dst) { int len = strlen(src) - 1; dst = (char*)malloc(len); whil
我尝试复制一个 strcopy() 函数,该函数在 ANSI-C 中处理整数数组,作为熟悉函数的练习。这是我写的代码: #include #include int main() { int
这里是strCopy的一个实现 void strcopy2(char *dst, char const *src){ while ((*dst++ = *src++)) ; }
几天前我刚刚开始用 C 语言编程,现在我正在尝试学习结构。 我有这个程序,但不幸的是由于某种原因我没有编译。我花了很多时间试图修复它,但我似乎找不到任何问题。 以下是我遇到的编译错误: arrays.
只是一个愚蠢但快速的问题:为什么一些使用 c 风格字符串的函数,例如:fgets、strcpy、strcat 等,当参数列表中有一个变量存储输出?即,为什么会这样: char *strcat ( ch
我是一名优秀的程序员,十分优秀!