h-b-z-d-j-s-m 发表于 2022-5-24 17:41:25

字符数组跟字符串数组问题

https://static01.imgkr.com/temp/ea0e44e7a5fe42808c5778abd287da34.jpg
请问4为什么不可以,因为是字符不是字符数组吗

wp231957 发表于 2022-5-24 17:56:03

①和②都是错的

傻眼貓咪 发表于 2022-5-24 17:56:40

'\0'

傻眼貓咪 发表于 2022-5-24 18:03:35

本帖最后由 傻眼貓咪 于 2022-5-24 18:06 编辑

答案是 1 和 3 是正确的:#include <stdio.h>

int main()
{
    char *a;
    a = "string";
   
    char b = "string";
    // b = "string"; 不能这样写
   
    char c[] = "string";
   
    char d[] = { 's', 't', 'r', 'i', 'n', 'g', '\0' };
    // char d[] = { 's', 't', 'r', 'i', 'n', 'g' }; 不能这样写
   
    printf("%s\n", a);
    printf("%s\n", b);
    printf("%s\n", c);
    printf("%s\n", d);

    return 0;
}string
string
string
string

jhq999 发表于 2022-5-24 18:06:24

wp231957 发表于 2022-5-24 17:56
①和②都是错的

1把字符串常量的指针赋值给s没错

wp231957 发表于 2022-5-24 18:07:01

傻眼貓咪 发表于 2022-5-24 18:03
答案是 1 和 3 是正确的:

char *a;
    a = "string";
这样也可以吗
我记得char *a = "string";这样可以

傻眼貓咪 发表于 2022-5-24 18:09:49

wp231957 发表于 2022-5-24 18:07
char *a;
    a = "string";
这样也可以吗


可以,char *a 很多人都误会了以为是字符串,其实是指针
指针可以改变的,右值不能改变。

wp231957 发表于 2022-5-24 18:12:51

傻眼貓咪 发表于 2022-5-24 18:09
可以,char *a 很多人都误会了以为是字符串,其实是指针
指针可以改变的,右值不能改变。

a = "string";这个一旦赋完值就固定死了,再也无法改变???

傻眼貓咪 发表于 2022-5-24 18:17:46

本帖最后由 傻眼貓咪 于 2022-5-24 18:19 编辑

wp231957 发表于 2022-5-24 18:12
a = "string";这个一旦赋完值就固定死了,再也无法改变???

没有,可以改变指针指向
#include <stdio.h>

int main()
{
    char *a;
   
    a = "string";
    printf("%s\n", a);
   
    a = "banana";
    printf("%s\n", a);

    return 0;
}
string
banana

wp231957 发表于 2022-5-24 18:21:42

傻眼貓咪 发表于 2022-5-24 18:17
没有,可以改变指针指向

这有些颠覆我的认知,我的认知   字符串常量不可修改啊      改日我一定要亲自测试
多谢

傻眼貓咪 发表于 2022-5-24 18:22:21

wp231957 发表于 2022-5-24 18:21
这有些颠覆我的认知,改日我一定要亲自测试
多谢

不客气 {:10_254:}{:10_254:}
页: [1]
查看完整版本: 字符数组跟字符串数组问题