问题标签 [char-pointer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
89 浏览

c - 使用字符指针和整数指针

我的问题是关于取消引用 char 指针

这是我的代码 -

在上面的代码中,我将 S[] 的地址分配给了 stackValue,当我打印 *stackValue 时它不起作用,

但如果我只打印 'stackValue' 那行得通。

当我用整数做同样的事情时

是打印字符指针和整数指针是不同的。当我在 int 值中使用 * 时,它会给出值,但当我将它用作 char 指针时会给出错误。

帮帮我?

0 投票
1 回答
128 浏览

c - C 中字符串的 printf 意外输出

案例1:当我输入字符串时,它成功地给出了输出,写了这段代码:

案例 2:另一方面,它会为此代码段引发运行时错误:

我发现这件事很奇怪,想知道它为什么会发生……在此先感谢。

0 投票
3 回答
629 浏览

c - 生成唯一值

我想创建一个C程序来生成从 0 到 999999 的数字,请记住,生成的数字不应包含任何重复的数字。例如,"123"是一个可接受的值,但不是重复"121"的。'1'我已经采购了其他程序代码来检查整数是否有重复的数字:

检查整数是否有重复数字。没有字符串方法或数组

检查数字重复数字的最快方法是什么?

但是,这些并不能真正解决我的问题,如果我要检查 1,000,000 个不同的值,它们是非常低效的解决方案。此外,提供的解决方案是 for intand not char[]and char *,我在我的程序中使用它。到目前为止,以下是我的代码。正如您所看到的,我处理高达 的值没有问题"012",但是 3 位及以上的值的可能性太多而无法列出,并且编码效率太低。将不胜感激一些帮助。

我面临的主要问题'9'是正在测试的价值的一部分。例如,序列 after "897"is"901"和 after中的下一个值"067895""067912"基于不重复的规则以及结果的顺序返回。

所需的输出如下:

感谢您提供任何帮助,如果我的问题的任何部分不清楚,请随时澄清。谢谢!

编辑:如何生成数字列表的所有排列?不能解决我的问题,因为从"120398"到的增量"120435"作为序列中的下一个“合法”值。

编辑 2:更新问题以包含所需的输出

0 投票
1 回答
72 浏览

c - 排序功能停止工作而没有任何错误 - C

该程序正在对数组中的字符串进行排序。

函数 Sort 在第三次运行后停止,没有编译错误

前哨:

(爸爸妈妈)

(姐姐、哥哥、爷爷)

(祖母)

(叔叔阿姨)

第0轮

第1轮

第二轮

预期输出:

(爸爸妈妈)

(姐姐、哥哥、爷爷)

(祖母)

(叔叔阿姨)

第0轮

第1轮

第二轮

第三轮

第4轮

第5轮

第6轮

第7轮

(阿姨,弟弟)

(父亲、祖父、祖母)

(母亲)

(选址,叔叔)

0 投票
1 回答
90 浏览

c++ - C++:cout 和指向 char 的指针无法解释的行为

在打印一个指向 int 的指针后,我打印一个指向 char 的指针:

我按预期得到以下输出:

但是,如果我注释掉cout << "&i: " << &i << endl;并再次运行程序,我会得到以下无法解释的输出:

有谁知道为什么会这样?

如果它与operator<<插入到流中直到找到一个空字符有关,那么为什么我在包含时会得到预期的输出cout << "&i: " << &i << endl;

注意:我不希望从 cout 获得 q 的地址。我期望得到 &q 指向的 C 字符串。让我烦恼的是,如果我cout << "&i: " << &i << endl;事先包含该行,输出将如何打印“q”。但是,如果我将该行注释掉,则输出中有垃圾数据。当我包含该行时,为什么我的输出中没有垃圾数据cout << "&i: " << &i << endl;

0 投票
3 回答
1221 浏览

c++ - 为什么编译器在某些情况下只能将 char * 隐式转换为 std::string

这些工作:

但这不会:

如果“hello”在前两种情况下被隐式转换为std::string,为什么不能在最后一种情况下呢?请注意,我没有将WithString构造函数指定为explicit,所以我期望这样的转换。

我可以通过这样做使行为起作用:

我只是对这个奇怪的东西感到好奇。如果我假设一个猜测,我会说这是因为在前两个工作情况下,转换是在const char *to之间std::string,但在错误情况下,这将需要一个 2 转换链,首先是 from const char *to std::string,然后是 from std::stringto WithString。所以也许这就是原因,但我不确定。

0 投票
5 回答
917 浏览

c - 了解 C 中的解引用、地址和数组下标运算符

我将 argv[] 定义为 char *。使用以下 printf 语句:

这是最后一个我不明白。打印是什么意思*argv[1]?为什么不一样,为什么*argv[1][0]不能打印出来printf("%s\n",*argv[1]);。另外,为什么是 &*argv[1]不同的地址&argv[1]呢?

0 投票
3 回答
2076 浏览

c++ - 在 C/C++ 中存储字符串、数组或指针哪个更有效?

我们可以使用 2 种方法存储字符串。

方法一:使用数组

方法二:

在方法 1 中,内存仅用于存储字符串“str”,因此使用的内存为 4 个字节。

在方法 2 中,内存用于将字符串“str”存储在“Read-Only-Memory”上,然后用于存储指向字符串第一个字符的指针。所以使用的内存必须是 4 个字节用于在 ROM 中存储字符串,然后 8 个字节用于存储指向第一个字符的指针(在 64 位机器中)。

第一种方法总共使用 4 个字节,方法 2 使用 12 个字节。在 C/C++ 中存储字符串时,方法 1 总是比方法 2 更好。

0 投票
1 回答
323 浏览

c++ - 将多个字符串从 c++ 代码传递给函数到 c 代码会引发错误

我有一个结构如下

已将上述结构的数组创建为

现在我将我的用户定义函数(通过)称为

c++代码

c代码

我应该在调用函数(c++ 代码)中将字符串类型的名称传递给 char * 类型的被调用函数(c 代码)。我正在使用 c_str() 但它会抛出错误。请帮助我提前谢谢

注意:从 c++ 代码调用 pass 函数,将字符串作为参数传递给 c 代码,c 代码捕获为 char *

0 投票
4 回答
46 浏览

c - 循环 char* 给我访问冲突写入位置 0x00CFB310

我尝试像这样打印简单的 c* 字符串:

但我得到:访问冲突写入位置 0x00CFB310。上 :

这里有什么问题?