王之叹息 发表于 2021-5-28 20:51:28

字符串问题

#include <stdio.h>
#include <string.h>
int main()
{
    //printf("请输入一个字符串:");
    char str;

    //fgets(str,1024,stdin);
    str="abcczxbvc";
    //scanf("%s",str);
    printf("%c",2);
    return 0;

}
有警告,并且打印的不对。
字符串只能定义的同时进行初始化吗

人造人 发表于 2021-5-28 20:56:00

#include <stdio.h>
#include <string.h>

int main()
{
    //printf("请输入一个字符串:");
    char str;

    //fgets(str,1024,stdin);
    //str="abcczxbvc";
    strcpy(str, "abcd1234");
    //scanf("%s",str);
    printf("%c",2);
    return 0;
}

wp231957 发表于 2021-5-28 21:01:32

人造人 发表于 2021-5-28 20:56


printf("%c",2);
这里的2是神马鬼

人造人 发表于 2021-5-28 21:05:41

wp231957 发表于 2021-5-28 21:01
printf("%c",2);
这里的2是神马鬼

str 就是 *(str + 2)
*(str + 2) 和 *(2 + str) 是一样的,加法交换律,a+b 等于 b+a
*(2 + str) 就是 2
就是编译器允许这么写

万千只cnm 发表于 2021-5-28 21:11:13

哈哈哈2【str】不过确实一样的== str【2】不过最好不要这么写   
另外
你这str【20】是个字符诶右值是字符串,值是个地址。。
而:
str= “字符串”
也不行str是个常量指针不能左值

万千只cnm 发表于 2021-5-28 21:12:42

哦 对了 你str【20】 也越界了
页: [1]
查看完整版本: 字符串问题