有什么区别:
char * const
Run Code Online (Sandbox Code Playgroud)
和
const char *
Run Code Online (Sandbox Code Playgroud) 所以,我知道char const*,char*const和char const*const之间的区别.那些是:
char*the_string:我可以更改the_string指向的char,我可以修改它指向的char.
const char*the_string:我可以更改the_string指向的char,但是我无法修改它指向的char.
char*const the_string:我无法更改the_string指向的char,但我可以修改它指向的char.
const char*const the_string:我不能更改the_string指向的char,也不能修改它指向的char.
(来自const char*const与const char*?)
现在,我的问题是:假设我正在编写一个不会修改传递给它的C字符串的函数,例如:
int countA(??? string) {
int count = 0;
int i;
for (i=0; i<strlen(string); i++) {
if (string[i] == 'A') count++;
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
现在,标题应该是什么?
int countA(char const * string);
int countA(char const * const string);
Run Code Online (Sandbox Code Playgroud)
我的感觉是我应该使用第二个,因为我不会修改指针本身,也不会修改数组的内容.但是,当我查看标准函数的标题时,他们使用第一个.例
char * strcpy ( char * destination, const char * source );
Run Code Online (Sandbox Code Playgroud)
为什么?
(事实上char const *对我来说没有意义,因为如果你正在考虑抽象字符串,要么你没有修改字符串(所以,char const * const因为你没有修改指针,也没有修改内容)或者你将修改string(所以只是char *因为你可以修改内容,你可能需要分配更多的内存,所以你可能需要修改指针) …
首先,它们之间的区别是什么:
(1) const char*
(2) char const*
(3) const char const*
Run Code Online (Sandbox Code Playgroud)
我相当肯定我完全理解这一点,但我希望有人给我一个句子,特别是,所以它坚持我的头脑.这是我很好的事情之一,直到有人把我放在现场,然后它变得模糊!
另外,编译器如何存储字符串文字?这不是家庭作业,我只是在C上面试,以防万一有人关心.
我有一个具有以下签名的方法:
size_t advanceToNextRuleEntryRelatedIndex( size_t index, size_t nStrings, char const *const *const strings)
Run Code Online (Sandbox Code Playgroud)
我该如何解释这个:char const *const *const strings?
谢谢,帕万。
我正在读这个:const char*const与const char*?
在string.h,strlen定义为:
size_t strlen ( const char * str );
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,strlen需要一个指向const的char的指针.不应该是:
size_t strlen ( const char* const str );
Run Code Online (Sandbox Code Playgroud)
这样可以确保strlen不能修改指针指向不同的指针吗?
或者,是这样的情况:
由于str指针将通过值传递给strlen,因此函数中对此指针的任何更改都不会更改源指针,因此它没关系..
??
可能的重复:
char * const和const char *有什么区别?
const char * const vs const char *?
当我们在c中定义一个函数时,我们可以使用(const char * str),(char const * str)或(char * const str)作为变量。它们之间有什么区别?
char const*const variablename = " ";
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
与指针声明相同吗?
请任何人解释。
先感谢您!
这是我无法理解的代码:
char* myPtr = "example";
myPtr[1] = 'x';
Run Code Online (Sandbox Code Playgroud)
我如何被允许使用myPtr[1]?为什么我可以选择像数组一样的位置?myPtr甚至不是一个阵列.
OBS.我知道查找表,文字池和字符串文字,我关心的是这甚至编译.我没有那么多使用指针.
有人可以帮忙吗?
我明白了
error: could not convert 'p1' from 'Person (*)()' to 'Person'
Run Code Online (Sandbox Code Playgroud)
每当我使用默认构造函数时(当我创建Person p1时),我知道这是因为我使用的是char数组,但我必须使用它,我不能使用字符串
我也收到了2个警告
warning: converting to non-pointer type 'char' from NULL [-Wconversion-null]|
Run Code Online (Sandbox Code Playgroud)
在默认构造函数中
warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]|
Run Code Online (Sandbox Code Playgroud)
当我创建Person p2时
所以这是我的代码
#include <iostream>
#include <string>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
class Person{
private:
char* name;
char gender;
int age;
public:
Person();
Person(char*, char, int);
friend void printInfo(Person);
};
Person::Person()
:name(NULL), gender(NULL), age(0) // this results in the first warning
{
}
Person::Person(char* n, …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习C++,而我正在创建一些无用的应用程序来测试.我正在使用const char和参数,在这段代码中我无法获得标题字符串.
const char* title = "";
if (argc >= 3) {
string tittle(argv[2]);
title = tittle.c_str();
}
Run Code Online (Sandbox Code Playgroud)
请帮我!