相关疑难解决方法(0)

C++中的堆栈或堆中的全局内存管理?

如果我在C++应用程序中全局声明数据结构,它是否会消耗堆栈内存或堆内存?

例如

struct AAA
{

.../.../.
../../..
}arr[59652323];
Run Code Online (Sandbox Code Playgroud)

c++ stack memory-management

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

是否可以在C中修改字符串?

我用各种各样的C教程和与指针相关的书籍一直在苦苦挣扎几个小时,但我真正想知道的是,如果可以在创建一个char指针后更改它.

这是我尝试过的:

char *a = "This is a string";
char *b = "new string";

a[2] = b[1]; // Causes a segment fault

*b[2] = b[1]; // This almost seems like it would work but the compiler throws an error.
Run Code Online (Sandbox Code Playgroud)

那么有没有办法改变字符串内的值而不是指针地址?

谢谢

编辑:

谢谢大家的回答.现在更有意义了.特别有意义的是,为什么有时它工作正常而其他时候不工作.因为有时候我会传递一个char指针,有时会传递一个char数组(char数组工作正常).

c string debugging

65
推荐指数
6
解决办法
11万
查看次数

关于C中的字符指针

考虑这个定义:

char *pmessage = "now is the time";
Run Code Online (Sandbox Code Playgroud)

在我看来,pmessage将指向内存中包含这些字符的连续区域和最后一个字符'\0'.所以我从中得出,只要我在这个区域的范围内,我就可以使用指针算法来访问该字符串中的单个字符.

那么为什么他们说(K&R)修改个别角色是不确定的?
此外,为什么当我运行以下代码时,我得到一个"分段错误"?

*(pmessage + 1) = 'K';
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

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

分段写入字符串时出错

我正在尝试编写就地反向函数并且几乎完全遵循在线代码,但运行以下程序会引发总线错误.我是否将错误的参数传递给reverse()?

void reverse(char *str) {
    char * end = str;
    char tmp;
    if (str) {
        while (*end) {
            ++end;
        }
        --end;
        while (str < end) {
            tmp = *str;
            *str++ = *end;
            *end-- = tmp;
        }
    }
}

int main() {
    char *s = "sample";
    reverse(s);
    printf("%s\n");
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

c memory reverse pointers

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

标签 统计

c ×3

pointers ×2

arrays ×1

c++ ×1

debugging ×1

memory ×1

memory-management ×1

reverse ×1

stack ×1

string ×1