用字符串给指针变量赋值,为什么不用&
时间: 2023-04-01 22:04:12 浏览: 160
我可以回答这个问题。在 C 语言中,字符串是一个字符数组,以 null 结尾。当我们给指针变量赋值时,需要将字符串的首地址赋给指针变量,而不是整个字符串。这是因为指针变量存储的是地址,而不是字符串本身。因此,我们需要使用字符串的地址来给指针变量赋值。
相关问题
为什么能用字符串常量赋值指针
在C语言中,字符串常量实际上是一个字符数组,它以null字符('\0')结尾。当我们使用一个字符串常量来初始化一个指针时,实际上是将指针指向了这个字符数组的第一个元素。
例如,以下代码将一个字符串常量赋值给一个指向字符的指针变量:
```
char *str = "Hello, World!";
```
这里,编译器会将字符串常量"Hello, World!"存储在内存中,并且将指针变量str指向这个字符串常量的第一个字符'H'。因此,我们可以通过指针变量str来访问该字符串。
需要注意的是,由于字符串常量存储在只读内存区域,因此我们不能修改它们的值。如果我们尝试修改指向字符串常量的指针所指向的值,那么就会导致不可预知的行为发生。
mfc 给wchar_t指针类型变量重新赋值字符串
你可以使用 `wcscpy` 函数来给 `wchar_t` 类型的指针变量重新赋值字符串。该函数的语法如下:
```c++
wchar_t* wcscpy(wchar_t* dest, const wchar_t* src);
```
其中,`dest` 参数是要被赋值的目标指针变量,`src` 参数是要被赋值的源字符串。
以下是一个示例代码:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
wchar_t* str = new wchar_t[50];
wcscpy(str, L"Hello, world!"); // 给指针变量重新赋值字符串
wcout << str << endl;
delete[] str;
return 0;
}
```
输出:
```
Hello, world!
```