相关疑难解决方法(0)

char s []和char*s有什么区别?

在C中,可以在声明中使用字符串文字,如下所示:

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

或者像这样:

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

那么区别是什么呢?我想知道在编译和运行时的存储持续时间实际发生了什么.

c string constants char

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

char*str = {"foo",...}和char str [] [5] = {"foo",...}数组定义有什么区别?

案例1:我写的时候

char*str={"what","is","this"};
Run Code Online (Sandbox Code Playgroud)

然后str[i]="newstring";是有效的,而str[i][j]='j';无效.

案例2:我写的时候

char str[][5]={"what","is","this"};
Run Code Online (Sandbox Code Playgroud)

然后str[i]="newstring";无效,而str[i][j]='J';有效.

为什么会这样?我是一个初学者,在阅读其他答案后已经非常困惑.

c arrays pointers arrayofarrays

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

返回字符数组或指向char literal的指针时的区别

我了解到,当我初始化一个字符数组时,就像初始化一个指向字符的指针一样.但是,如果是这种情况,为什么以下代码输出奇怪的字符?

char* returnMe()
{
    char text[] = "Will I live forever?";
    return text;
}
Run Code Online (Sandbox Code Playgroud)

而以下代码:

char* returnMe()
{
    char* text = "Will I live forever?";
    return text;
}
Run Code Online (Sandbox Code Playgroud)

输出:

我会永远活着吗?

这两个初始化之间到底有什么区别?它们都像指针一样,所以如果我这样做:

puts(X); //puts get char* as a parameter in it.
Run Code Online (Sandbox Code Playgroud)

它适用于两种情况(当我还没有超出范围时.)

c++ arrays pointers

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

标签 统计

arrays ×2

c ×2

pointers ×2

arrayofarrays ×1

c++ ×1

char ×1

constants ×1

string ×1