string char*
时间: 2023-11-14 12:55:37 浏览: 51
引用: char *s="string"的内容是不可以改的;char s[10]="string"的内容是可以改的。
char *s="string"是一个指针,指向字符串常量"string",这个指针是不可更改的,也就是不能修改指向的字符串的内容。而char s[10]="string"是一个字符数组,其中的字符串内容是可以更改的。
在C语言中,字符串常量是不可更改的,因为它们存储在只读存储区域。如果尝试修改字符串常量的内容,会导致未定义的行为。而字符数组是可更改的,因为它们在内存中有一块可写的存储区域。
所以,如果你需要一个可以更改的字符串,应该使用字符数组(char array),而不是字符串常量(char *)。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
相关问题
use C program Write a function to copy all the characters in the input string t starting from the m-th character to the string s.call this function in main. void strmcpy( char *t, int m, char *s ); The strmcpy function copies all characters starting from the m-th character in the input string char * t to the string char * s. If m exceeds the length of the input string, the resulting string should be an empty string.
Sure! Here's an example implementation of the `strmcpy` function in C:
```c
#include <stdio.h>
#include <string.h>
void strmcpy(char *t, int m, char *s) {
int len = strlen(t);
if (m > len) {
// m is greater than the length of t
s[0] = '\0'; // empty string
} else {
// copy characters from t to s
strcpy(s, t + m - 1);
}
}
int main() {
char t[] = "hello world";
char s[20];
int m = 3;
strmcpy(t, m, s);
printf("%s\n", s);
return 0;
}
```
In this implementation, we first find the length of the input string `t` using the `strlen` function. If `m` is greater than the length of `t`, we set `s` to an empty string by setting the first character to `\0`. Otherwise, we use the `strcpy` function to copy all characters from `t` starting from the `m`-th character to `s`. Note that we subtract 1 from `m` because string indices in C start from 0.
In the `main` function, we test the `strmcpy` function by calling it with the input string `t`, the starting index `m`, and an output string `s`. We then print the resulting string `s` to the console.
C++ string char*
在C++中,可以使用三种方法将string转换为char*。首先是使用data()方法,可以通过str.data()将string转换为const char*。其次是使用c_str()方法,可以通过str.c_str()将string转换为const char*。最后是使用copy()方法,可以通过str.copy(p, len, 0)将string复制到char数组中。其中,len代表要复制的字符数,0代表复制的起始位置。需要注意的是,使用copy()方法时需要手动添加结束符'\0'。
要将char*转换为string,可以直接将char*赋值给string对象,如string str = s。也可以将char数组赋值给string对象,如string str = s[20]。
在C语言中,可以将char* a[]赋值给char**,但是不能将char**赋值给char* a[],因为在char* a[]中,a作为数组名是一个常量,无法赋值。
阅读全文