char arr[] = "12345"; char* arr1 = arr; char* arr2 = arr; *arr= "234576";哪里错了
时间: 2024-01-11 18:02:59 浏览: 25
这段代码有几个错误:
1. 在第三行中,应该使用指针 `arr2` 来指向字符串 "12345" 的地址,而不是将 `arr` 再次赋值给 `arr2`。
2. 在第四行中,应该使用单引号 `' '` 而不是双引号 `" "` 来表示字符。
正确的代码应该是这样的:
```
char arr[] = "12345";
char* arr1 = arr;
char* arr2 = &arr[0];
*arr = '2';
```
这段代码将字符 '2' 赋值给了字符串 "12345" 的第一个字符位置,即将字符串变为 "22345"。注意,`arr1` 和 `arr2` 都指向字符串 "12345" 的首地址,因此对 `*arr` 的修改会影响整个字符串。
相关问题
char arr="hello word"是什么
这里有两个问题需要解决:
1. 是不是应该使用单引号而不是双引号?
2. 是不是应该使用字符数组而不是字符串?
假如我们将问题修改为:
char arr[] = "hello world";
那么,这个声明定义了一个字符数组arr,其中包含了字符串"hello world"的字符序列,包括空格和结束符'\0'。因为字符串是以'\0'作为结尾的,所以在声明字符数组时需要将'\0'考虑在内。
这个字符数组可以用来表示一个字符串,并且可以对每个字符进行操作,比如访问、修改等。
char arr[]={"hello"} 计算sizeof(arr) sizeof(*arr) sizeof(**arr)
对于 `char arr[]={"hello"}`,计算 `sizeof(arr)`、`sizeof(*arr)` 和 `sizeof(**arr)` 的结果如下:
- `sizeof(arr)`:该数组的大小为 6(包括字符串末尾的空字符 \0),因为 `arr` 中包含 6 个 `char` 类型的元素。
- `sizeof(*arr)`:`*arr` 表示数组的第一个元素,即 `arr[0]`,其类型为 `char`,因此 `sizeof(*arr)` 的结果为 1。
- `sizeof(**arr)`:`**arr` 表示数组的第一个元素的第一个字符,即 `arr[0][0]`,其类型为 `char`,因此 `sizeof(**arr)` 的结果为 1。