相关疑难解决方法(0)

C:char指针和数组之间的差异

考虑:

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

我从C编程语言第2版​​中读到,上述两个陈述没有做同样的事情.

我一直认为数组是一种操作指针来存储一些数据的便捷方式,但显然情况并非如此...... C中数组和指针之间的"非平凡"差异是什么?

c arrays pointers

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

可以修改C中的字符串文字吗?

最近我有一个问题,我知道一个指向常量数组的指针(在下面的代码中初始化)位于该.rodata区域中,并且该区域仅可读。但是,我在模式C11中看到,此内存地址行为的写入将是不确定的。我知道Borland的Turbo-C编译器可以在指针指向的地方写,这是因为处理器在当时的某些系统上以实模式运行,例如MS-DOS?还是与处理器的操作模式无关?使用保护模式下的处理器,是否还有其他编译器可以写入指针并且不会导致任何内存破坏失败?

#include <stdio.h>

int main(void) {
    char *st = "aaa";
    *st = 'b'; 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在此代码与MS-DOS中的Turbo-C一起编译时,您将能够写入内存

c gcc x86-16

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

当我们能够或不能修改String Literals时

#include<stdio.h>

int main ()
{
    char *s="FIGHT" ;
    printf("\n Whole string is %s ", s );            // Printing FIGHT -- this is fine
    s[0]='L' ;
    printf ("\n Now whole string is %s", s );  // Printing LIGHT -- My Question is how string literal constant is getting modified when it is being stored in read only memory .
}
Run Code Online (Sandbox Code Playgroud)

以上代码在我的系统上工作正常.

c string string-literals

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

标签 统计

c ×3

arrays ×1

gcc ×1

pointers ×1

string ×1

string-literals ×1

x86-16 ×1