相关疑难解决方法(0)

(const char * str),(char const * str)和(char * const str)有什么区别?

可能的重复:
char * const和const char *有什么区别?
const char * const vs const char *?

当我们在c中定义一个函数时,我们可以使用(const char * str),(char const * str)或(char * const str)作为变量。它们之间有什么区别?

c pointers const

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

为什么指向const的指针所指向的位置可由其他变量赋值?

我写了这段代码

#include <stdio.h>
int main() {
     int b = 15;
     const int *foo = &b;
     //b = 20;
     *foo = 20;
     printf("%d", *foo);
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

这意味着foo指向的位置无法更改.这意味着b无法改变.但是当我取消注释时b = 20.它没有显示任何错误,我得到了输出20.在这段代码中我得到了这个错误

main.c: In function 'main':
main.c:15:10: error: assignment of read-only location '*foo'
      *foo = 20;
Run Code Online (Sandbox Code Playgroud)

如果*foo那是b只读位置,为什么我可以改变它的值b = 20

c pointers

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

`using`和直接插入之间的区别

考虑2个片段:

using x = int*;

int main () {
  const x a = new int(3);
  *a = 5;
}
Run Code Online (Sandbox Code Playgroud)

int main () {
  const int* a = new int(3);
  *a = 5;
}
Run Code Online (Sandbox Code Playgroud)

第一个编译,而第二个没编译

- > using不等于简单地"插入"类型然后解析该行.

using直接使用和"内联"类型之间是否存在更多差异?

c++ using const

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

googletest doc C字符串和字符串

我正在阅读Googletest doc,我知道有一种比较字符串的语法,另一种用于比较C字符串.我没有看到什么被称为C字符串和字符串.这些有何不同?

c c++ string googletest

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

为什么声明void f(const int*p)正在修改p

通过声明

const int i;
Run Code Online (Sandbox Code Playgroud)

很明显,i无法修改.
那么为什么宣言呢

void f (const int *p) 
Run Code Online (Sandbox Code Playgroud)

正在修改p?(我测试了它,它正在修改,p但不知道如何?).

c pointers const

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

是否可以确定字符串是否为"只读"?

是否有可能确定字符串是否不能写在传递给它的那一边char * string

我的代码:

#include <stdio.h>

typedef enum string_type 
    { READ_ONLY, READ_WRITE }
    String_type;

String_type isvalid(char *s);

void test(char *s){
    if(isvalid(s))
        printf("OK\n");
    else
        printf("NG\n");
}

int main(void){
    char data_str[] = "data_str";

    test("data_str");// fails
    test(data_str);// works

    return 0;
}

String_type isvalid(char *s){
    //Can it be determined by this?
    //I don't think this is a portable way.
    return (void *)s > (void *)main ? READ_ONLY : READ_WRITE;
}
Run Code Online (Sandbox Code Playgroud)

c

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

错误:从“const char*”到“char*”的无效转换[-fpermissive]

首先,这不是重复的,因为之前问过同样的错误问题,但在不同的上下文中

1

代码

#include<iostream>
#include<cstring>

int main()
{
    const char *s1;
    const char *s2="bonapart";
    
    s1=new char[strlen(s2)+1];
    strcpy(s1,s2);
    
    std::cout<<s1;
}
Run Code Online (Sandbox Code Playgroud)

输出

[Error] invalid conversion from 'const char*' to 'char*' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

为什么会出现这样的错误?

如果我取代const char *s1char *s1 编译罚款。但我认为这const只是说 s1 指向常量字符串意味着我们不能修改它所指向的字符串。这并不意味着它s1常数 ptr。请对此有所了解。

c++ constants syntax-error

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

C:使用char*const指针

在下面的程序中,p被声明为一个指针(它是常量BUT字符串不是).但程序仍然无法工作并突然停止说"untitled2.exe已停止工作".

#include<stdio.h>
#include<stdlib.h>

int main(){
    char * const p = "hello";
    *p = 'm';
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么会出现这种意外

c pointers const char

0
推荐指数
2
解决办法
760
查看次数

从C中的函数返回一个const字符串

我有以下代码:

const char * func_journey ()
{
    const char * manner = "Hello";

    manner = "World";

    return manner;

 }

 int main()
 {

     const char * Temp;

     Temp = func_journey();

     return 0;
 }
Run Code Online (Sandbox Code Playgroud)

我在调试中运行它只是为了看看会发生什么,某种方式从"Hello"变为"World"并且指针也发生了变化,因为我已经将它声明为const.

另一件事是,在运行结束时Temp是"世界",现在又怎么样?方式是func_journey里面的一个自动变量,它不应该在最后被破坏吗?

非常感谢.

c string function

0
推荐指数
1
解决办法
136
查看次数

为什么我可以通过指针更改常量(const char *)的值?

标题说明了一切。如何更改常数的值?这是否与更改常量数组的索引X处的元素的值相同?

    #include<iostream>
    int main(){
        const char* y = "original";
        auto *p = &y;
        *p = "modified";
        std::cout<<y<<"\n";
        //outputs modified
        system("pause");
        return 0;
    }
Run Code Online (Sandbox Code Playgroud)

c++ pointers constants

0
推荐指数
1
解决办法
75
查看次数

这两个指针声明有什么区别?

这些声明是不同的还是产生相同的结果?

char * const *argv;
Run Code Online (Sandbox Code Playgroud)

const char **argv;
Run Code Online (Sandbox Code Playgroud)

是否存在差异或指针指针?

背景是我正在编写一个C命令行shell并将此结构用于命令:

struct command
{
    char * const *argv;
};
Run Code Online (Sandbox Code Playgroud)

上面的结构用于调用exec.现在,当我查看另一个问题时,结构是不同的:

用shell中的管道连接n个命令?

在那个问题中,实现相同的结构是不同的.

c posix pipeline

-4
推荐指数
1
解决办法
88
查看次数

标签 统计

c ×8

pointers ×5

c++ ×4

const ×4

constants ×2

string ×2

char ×1

function ×1

googletest ×1

pipeline ×1

posix ×1

syntax-error ×1

using ×1