C语言 对我应该在什么时候进行混淆



我知道如果我在指针变量中输入一个字符串,我会根据收到的输入大小对其进行 malloc。

但是,如果我在strchr中使用指针变量怎么办?例如,如果我希望指针指向字符串中的字符"z"。

char *pointer;
pointer=strchr(string,'z');

我需要 malloc 指针吗?还是不需要?

您不必在此处分配任何内存。Strchr 函数返回指向字符串中第一个出现的字符(如果存在)的指针。如果给定的字符串 deos 不包含字符,则将返回 null。

仅当您要创建尚未创建的新内容时,才需要分配内存。在这种情况下,输入字符串存在,指针将指向此字符串中的某个位置。

strchr返回指向 C 字符串中第一个出现的字符的指针。

它指向一个内存位置,该位置在 C 字符串中搜索字符,因此无需使用 malloc 分配新内存

使用 malloc() 为指针分配空间,然后重新分配指针是错误的。你甚至不能对它执行指针算术,因为那样你就无法释放它。您分配内存然后使用该内存,指针将包含该内存的地址,如果您覆盖该地址,那么您的程序将无法访问该内存甚至无法释放它。那么分配的内存是无用的,为此分配内存是没有意义的。

如果您需要系统为您提供内存来存储数据,则必须使用 malloc。例如,如果要存储字符串,则应为其分配内存

char* s = malloc(10);
strcpy(s, "something");

如果你只需要一个指向内存中已有内容的指针,则不得分配它,在这种情况下,strchr函数返回一个指针,该指针指向内存中字符串中字符c的位置s

char* c;
c = strchr(s, 'm');

相关内容

  • 没有找到相关文章

最新更新