Нет разницы между char*
и char *
, но есть разница между char&
и char*
, поэтому, пожалуйста, отредактируйте свой вопрос и будьте более конкретными c, скажите, что вы ожидаете, потому что ваш код делает то, что вы написали, поэтому я не знаю, нужно ли объединить массив символов с 2. Если это так, то я предлагаю вам использовать <string>
, в этой библиотеке вы можете использовать оператор + () для конкатенации ссылка .
В вашем коде вы делаете следующее: вы создаете массив, а затем печатаете что-то по адресу c + 2. Это 'l'. Когда я бегу, я получаю это. Как кто-то сказал раньше, вы должны быть осторожны, потому что const char*
не может использоваться для инициализации char *, reference .
Если вы действительно хотите изменить эту строку, вы можете сделать что-то вроде этого:
#include<iostream>
#include <stdlib.h>
#define num 2
using namespace std;
int main() {
const char* c = "HelloWorld!!!";
char* str;
int n = 0;
while (true)
{
if (c[n++] == '\0') // '\0' is character for terminating string
{
break;
}
}
str = (char*)calloc(n + 1, sizeof(char));
for (int i = 0; i <= n; i++)
{
if (i < n - 1)
{
str[i] = c[i];
}
else
{
if (i == n - 1)
{
str[i] = (char)('0' + num);// with this sum you wil get ascii code of '2' and write it in str + n - 1
}
else
{
str[i] = '\0';
}
}
}
cout << str;
//cout << *(c + num);
return 0;
}
Есть разница между string
и char*
. В C / C ++ у вас может быть только массив символов. Вы можете выполнить любую простую операцию с char
, как и с int
. Но вы не можете выполнять операцию непосредственно с массивом, если не вызываете свою собственную функцию. По этой причине вы должны использовать библиотеки для выполнения таких операций, как конкатенация, сравнение строк или что-то еще. Если вы предпочитаете работать напрямую с char*
, вам следует использовать <string.h>
, но если вы хотите быть более удобным, вы можете использовать <string>
и создать строку как объект.