为什么我不能这样做:
char* p = new char[10];
void SetString(char * const str)
{
p = str;
}
SetString("Hello");
Run Code Online (Sandbox Code Playgroud)
我有一个指向char的const指针,为什么我不能将const指针指向另一个指针?
这似乎是不合逻辑的,因为通过将其分配给另一个指针,您基本上不会违反char指针的常量.或者是你?
编辑:当我编译它时,它说"错误C2440:'=':无法从'char*const*__ w64'转换为'char*'"
(我试图从我正在阅读的书中理解一个概念.只是无法获得编译的代码.
码:
int _tmain(int argc, _TCHAR* argv[])
{
MyString *strg = new MyString(10);
strg->SetString("Hello, ");
MyString *secondstr = new MyString(7);
secondstr->SetString("Tony");
strg->concat(*secondstr, *strg);
}
Run Code Online (Sandbox Code Playgroud)
CPP文件:
#include "MyStringClass.h"
#include <string.h>
#include "stdafx.h"
#include "MyStringClass.h"
void MyString::concat(MyString& a, MyString& b)
{
len = a.len + b.len;
s = new char[len + 1];
strcpy(s, a.s);
strcat(s, b.s);
delete [] s;
}
void …Run Code Online (Sandbox Code Playgroud) 我对const关键字非常困惑.我有一个函数接受一个字符串数组作为输入参数和一个接受可变数量的参数的函数.
void dtree_joinpaths(char* output_buffer, int count, ...);
void dtree_joinpaths_a(char* output_buffer, int count, const char** paths);
Run Code Online (Sandbox Code Playgroud)
dtree_joinpathsdtree_joinpaths_a在从参数列表构建了一个字符串数组后,在内部调用.
void dtree_joinpaths(char* output_buffer, int count, ...) {
int i;
va_list arg_list;
va_start(arg_list, count);
char** paths = malloc(sizeof(char*) * count);
for (i=0; i < count; i++) {
paths[i] = va_arg(arg_list, char*);
}
va_end(arg_list);
dtree_joinpaths_a(output_buffer, count, paths);
}
Run Code Online (Sandbox Code Playgroud)
但gcc编译器给我以下错误消息:
src/dtree_path.c: In function 'dtree_joinpaths':
src/dtree_path.c:65: warning: passing argument 3 of 'dtree_joinpaths_a' from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)
当我改为char** paths = malloc(count);时 …