char a[5],*p=a;p=“ABCD”
时间: 2024-05-15 22:19:29 浏览: 118
这段代码有问题,不能将字符串直接赋值给指向字符数组的指针。
应该这样写:
```c++
char a[5], *p = a;
strcpy(a, "ABCD"); // 将字符串复制到字符数组中
```
或者这样写:
```c++
char a[5] = "ABCD", *p = a;
```
这两种写法都可以将字符串赋值给字符数组,并将指针指向该数组的首地址。
相关问题
要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为( ) A. const char *p="ABCD"; B. char const *p="ABCD"; C. char *const p="ABCD"; D. const char * const p="ABCD";
正确答案是 D. const char * const p="ABCD"。
这里需要同时使用两个 const 关键字:
- 第一个 const 用于修饰指向的数据类型 char,表示所指向的数据是不允许被修改的。
- 第二个 const 用于修饰指针变量 p,表示指针本身也是不允许被修改的。
选项 A 和 B 中的 const 修饰的是 char,表示所指向的数据是不允许被修改的,但是指针本身是允许被修改的,不符合题意。
选项 C 中的 const 修饰的是指针变量 p,表示指针本身是不允许被修改的,但是所指向的数据是允许被修改的,也不符合题意。
char a[5],*p=a; *p="abcd"
This code will result in a compilation error.
Explanation:
- `char a[5]` creates an array of 5 characters.
- `*p=a` assigns the address of the first element of the array `a` to the pointer variable `p`.
- `*p="abcd"` tries to assign a string literal "abcd" to the memory location pointed to by `p`, which is not allowed because `p` points to a single character and not a string.
To assign the string "abcd" to the array `a`, we can use the `strcpy()` function like this:
```c
char a[5], *p=a;
strcpy(p, "abcd");
```
This will copy the string "abcd" to the array `a` starting at the memory location pointed to by `p`.
阅读全文