c - 在 C 中将字符串直接传递给输入参数为 char 指针的函数有哪些潜在问题?

标签 c string

在下面的 pusedo 代码中,函数 display 将 char* 作为输入参数,并传递了一个字符串“apple”。在函数中,字符串的元素是通过索引访问的。 这里没有字符串“apple”的内存,那么它是如何在显示函数中访问的

#include <stdio.h>
void display(char * str)
{
   int i = 0;

  while ('\0' != str[i])
  {
   printf("%c", str[i]);
   i++;
  }
}

int main()
{
   display("apple");
   return 0;
}

函数运行正常,输出为 apple。 这种方法在很多程序中都可以看到,但我想知道内存将在哪里分配给字符串“apple”。以及这种用法的潜在问题是什么。

最佳答案

Here there is no memory for the string "apple" then how this is getting accessed in the display function

字符串“apple”当然有内存:字符串文字放在内存中,文字本身用作指向该内存的指针。确切的位置是实现定义的,但将字符串文字放在程序的可执行代码占用的内存段中是很常见的。

What are the potential problems in this usage?

没有。只要您不尝试分配到字符串文字的内存中,您就是安全的。

关于c - 在 C 中将字符串直接传递给输入参数为 char 指针的函数有哪些潜在问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457567/

相关文章:

c - sprintf 无效格式 '%d'

c - fopen/fopen_s 和写入文件

c - 使用memset来防止 ''可变大小的对象可能无法初始化'

java - 使用正则表达式java的字符串操作

string - 在 VARCHAR 字段中使用 MAX()

c++ - 从字符串中删除一个字符

c - 用 C 实现 Malloc

c - 按位补码

java - 如何从 int 转换为 String?

python - 如何计算特定列中的项目/值在 pandas 数据帧的另一个/其他列中重复的次数?