相关疑难解决方法(0)


char a [] =?string?有什么区别?和char*p =?string?;?

正如标题所说,有什么区别

char a[] = ?string?; and 
char *p = ?string?;  
Run Code Online (Sandbox Code Playgroud)

这个问题在接受我采访时被问到了.我甚至不理解这个说法.

char a[] = ?string?
Run Code Online (Sandbox Code Playgroud)

什么是?运营商?它是字符串的一部分还是具有某些特定含义?

c++ pointers

47
推荐指数
5
解决办法
6万
查看次数

为什么这两个指针相等?寻求澄清.

我有一个简单的程序:

int main() {
    char *c = "message";
    char *z = "message";

    if ( c == z )
        printf("Equal!\n");
    else
        printf("Not equal!\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这个打印Equal!,即使在关闭优化的情况下进行编译(-O0).这将表明,这两个cz指向相同的内存区域,并因此在第一突变z(例如,改变z[0]a)将是昂贵的(需要复制和写入).

我对正在发生的事情的理解是我没有声明一个类型数组char,而是创建一个指向a的第一个字符的指针string literal.因此,c并且z都存储在数据段中,而不是存储在堆栈中(并且因为它们都指向相同的字符串文字,所以c == z是真的).

这与写作不同:

char c[] = "message";
char z[] = "message";

if ( c == z ) printf("Equal\n");
else printf("Not equal!\n");
Run Code Online (Sandbox Code Playgroud)

其打印Not equal! …

c

5
推荐指数
2
解决办法
230
查看次数

如何为const char*数组赋值并打印到屏幕

虽然我使用C++,但作为一项要求,我需要使用const char*数组而不是字符串或char数组.由于我是新手,我需要学习如何使用const char*.我已经将我的const char*数组声明为const char* str[5].在程序的稍后阶段,我需要使用值填充5个元素中的每个元素.

但是,如果我尝试分配这样的值:

const char* str[5];
char value[5];
value[0] = "hello";
str[0] = value[0];
Run Code Online (Sandbox Code Playgroud)

它不会编译.将char数组添加到char到const char*数组然后打印数组的正确方法是什么?任何帮助,将不胜感激.谢谢.

c arrays string char

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×3

pointers ×2

arrays ×1

c++ ×1

char ×1

const ×1

string ×1