我开始学习C,我想创建一个字符串.我正在使用的示例是这样做的:
char *c = malloc(2 * sizeof(char)); // 2
*c = 'A';
*c++ = 'B';
printf('%s', c); //doesn't print anything?
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何打印字符串AB?
Pau*_* Bu 11
通过这样做:*c++ = 'B';你增加了指针.这就是为什么printf不打印任何东西.
C和C++中的字符串需要以零字节(\x00)结尾.printf依靠这个来正常工作.正确的方法(关于你的代码)将是:
char *c = malloc(3 * sizeof(char)); // 2
*c = 'A';
*(c+1) = 'B';
*(c+2) = 0
printf("%s", c);
Run Code Online (Sandbox Code Playgroud)
这绝不是有效的.通常我们声明这样的文字字符串:
char *c = "ab";
Run Code Online (Sandbox Code Playgroud)
如果你想要了解指针是如何工作的.然后你的方法是一个很好的练习.只需了解一元运算++符递增应用的变量,因此,c在应用它之后,指针不会再指向字符串的开头.这*(c+1)就是你正在寻找的原因.
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |