相关疑难解决方法(0)

C++ - 数组是指针吗?

可能重复:
C:指针和数组之间的差异

arrayC++一个pointer?你能澄清一下吗?

谢谢.

c++ arrays pointers

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

C :为什么只有一些文字字符串会导致我的程序崩溃?

我尝试了以下程序:

#include <stdio.h>

char s1[] = "Global String";
char *s2 = "Another Global String";

main()
{
    char s3[] = "Local String" ;
    char *s4 = "Another Local String" ;

    strcpy( s1, "New str" );
    strcpy( s2, "New str" ); // causes seg fault
    strcpy( s3, "New str" );
    strcpy( s4, "New str" ); // causes seg fault
}
Run Code Online (Sandbox Code Playgroud)

s2s4导致分段错误,大概是因为它们存储在只读数据段中。怎么会在文字字符串的指向s1s3不崩溃?这是在 Ubuntu 上。

奇怪的是,s1, s2,s3s4都可以修改,并且在 cygwin 上使用 gcc …

c string

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

C中的char stringA [LEN]和char*stringB [LEN]之间有什么区别?

我读了几个类似的问题,C:字符指针和数组之间的差异,是什么个char []与char*S之间的区别?,char array []和char*array有什么区别?但他们似乎都不清楚我的怀疑.

我知道

char *s = "Hello world";
Run Code Online (Sandbox Code Playgroud)

使字符串不可变,而

char s[] = "Hello world";
Run Code Online (Sandbox Code Playgroud)

可以修改.

我怀疑的是,如果我这样做char stringA[LEN]; ,char* stringB[LEN];他们有什么不同吗?或者stringB在之前的情况下再次变得不可变?

c arrays string pointers

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

char a [] = {'a','\ 0'}和char*b ="a"相等?

char a[] = {'a', '\0'}char *b = "a"平等?

有什么不同?

c

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

为什么C程序崩溃了?

请有人解释为什么以下C程序崩溃:

void changeChar(char *string);

int main(int argc, char *argv[])
{
  char *test = "word";
  changeChar(test);
  return 0;
}

void changeChar(char *string) {
  *string = 'A';
}
Run Code Online (Sandbox Code Playgroud)

而以下代码完美地运作:

void changeChar(char *string);

int main(int argc, char *argv[])
{
  char test[] = "word";
  changeChar(test);
  return 0;
}

void changeChar(char *string) {
  *string = 'A';
}
Run Code Online (Sandbox Code Playgroud)

c string pointers string-literals

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

取消引用这个指针给了我-46,但我不知道为什么

这是我运行的程序:

#include <stdio.h>

int main(void)
{
    int y = 1234;
    char *p = &y;
    int *j = &y;
    printf("%d %d\n", *p, *j);
}
Run Code Online (Sandbox Code Playgroud)

我对输出有点困惑.我所看到的是:

-46 1234
Run Code Online (Sandbox Code Playgroud)

我把这个程序写成了一个实验,不知道它会输出什么.我期待可能有一个字节y.

这里发生了什么"幕后"?解除引用如何p给我-46

正如其他人指出的那样,我必须进行明确的施法才能导致UB.我没有改变这一行char *p = &y;,char *p = (char *)&y;所以我没有使下面的答案无效.

此程序不会导致此处指出的任何UB行为.

c pointers casting dereference

-3
推荐指数
2
解决办法
1243
查看次数

标签 统计

c ×5

pointers ×4

string ×3

arrays ×2

c++ ×1

casting ×1

dereference ×1

string-literals ×1