void cat(char *&p, const char *str) { char str[100] = { 0 }; strcat_s(p, 100, str); if (p != nullptr) { strlen(p) + 1; } } int main() { char *p = nullptr; cat(p, "123"); cout << p << endl; //输出123 cat(p, "ABC"); cout << p << endl; //输出123ABC cat(p, "789"); cout << p << endl; //输出123ABC789 delete[] p; return 0; }
时间: 2024-04-03 12:30:57 浏览: 16
这段代码有一些问题。首先,在函数`cat`中定义了一个与传入参数同名的局部变量`str`,这会导致在调用`strcat_s`时无法正确地拼接字符串。其次,在`strlen(p) + 1`处,虽然计算了字符串的长度,但并没有对其进行任何操作,这似乎是多余的。最后,在`delete[] p`时,应该先判断`p`是否为空指针,否则可能会导致程序崩溃。
相关问题
const char* str与const char&str
const char* str 表示一个指向字符常量的指针,可以用来存储字符串的地址。这种表示方法可以让我们对字符串进行修改,因为指针可以指向不同的地址。
而 const char& str 表示一个对字符常量的引用,它是一个别名,可以用来访问字符串中的字符。这种表示方法不允许我们对字符串进行修改,因为引用是只读的。
所以,const char* str 可以用来表示字符串的地址,并且可以修改字符串内容,而 const char& str 只能用来访问字符串的内容,不能修改字符串。
char *const p char const *p const char *p有什么区别
这三种声明方式都涉及到const关键字,但它们有不同的含义。
1. `char *const p`:p是一个指向char类型的常量指针,也就是说,p的值(即地址)不能改变,但是p指向的内存中存储的值可以改变。
2. `char const *p`:p是一个指向const char类型的指针,也就是说,p指向的内存中存储的值不能改变,但是p本身的值(即地址)可以改变。
3. `const char *p`:与第二种声明方式相同,p是一个指向const char类型的指针,也就是说,p指向的内存中存储的值不能改变,但是p本身的值(即地址)可以改变。
因此,这三种声明方式的区别在于const关键字出现的位置。第一种声明方式中const出现在*前面,表示指针本身是常量;第二种和第三种声明方式中const出现在*后面,表示指针指向的对象是常量。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)