用于传递参数的连续内存

标签 c pointers memory parameters

我正在尝试一些东西,发现了这个小奇怪的地方。使用下面的代码,它将输出“World”(每个字符分成每一行)。这是否意味着传递给函数的参数在内存中是连续的?

#include <stdio.h>
#include <string.h>

void mystrtst(char *s, char *t);

int main() {
  mystrtst("Hello", "World");
}

void mystrtst(char *s, char *t) {
  while(*s++);
  for( ; *t ; s++, t++) {
    printf("%c\n", *s);
  };
}

最佳答案

您有指向存储在内存某些部分的 2 个字符串的指针。

您所看到的是未定义的行为。

不保证这两个字符串始终按照输出显示的方式存储。

关于用于传递参数的连续内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359608/

相关文章:

c++ - 使用迭代器从 STL 列表中删除 C++ 结构

c++ - visual studio 中的 c++ 指针问题(但在 g++ 中有效)

Java:在内存中存储大数据(> 2GB)的官方方法是什么?

c - 普通的指针算术可以在 opencl 内核上工作吗?

c - 错误消息 "format ‘%ld’ 需要类型为 ‘long int’ 的参数,但参数 2 的类型为 ‘int’“

c++ - ‘->’ 的基本操作数具有非指针类型

c - C 中的 Malloc - 返回值

python - 缓冲区错误 : could not get scalar buffer information

python - uuid.uuid1、uuid_generate_time 和线程

C、字符串、文件