char *s;s="ABCDEF";为啥不是正确的进行赋值字符串操作啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了char *s;s="ABCDEF";为啥不是正确的进行赋值字符串操作啊?相关的知识,希望对你有一定的参考价值。

参考技术A 这样理论上的没错的

把s指针指向字符串

可以改变s指针

但不能改变其指向的值

正确的应该是这样

char s[] = "ABCDEF";

或者

char s[8];
strcpy(s, "ABCDEF");

或者

char *s = (char*)malloc(8);
strcpy(s, "ABCDEF");
...
free(s);本回答被提问者采纳
参考技术B 字符串不能通过赋值号赋值,必需用 strcpy 函数“赋值”:
strcpy(s,"ABCDEF");

C 语言,就是这样的规则,无可奈何。
参考技术C char *s = "abcd"这样是正确的。 参考技术D 编译通过 = =!!

java基础面试题:如何把一段逗号分割的字符串转换成一个数组? String s = "a" +"b" + "c" + "d&qu

package com.swift;

public class Douhao_String_Test {

    public static void main(String[] args) {
        /*
         * 如何把一段逗号分割的字符串转换成一个数组?
         * String s = "a" +"b" + "c" + "d";生成几个对象?
         */
        
        String str="sdjkfl,sldfj,abc,ei3,239d";
        String[] arr=str.split(",");
        
        for(String s:arr) {
            System.out.println(s);
        }
        
        String s1 = new String("hello");   //新对象不同堆空间
        String s2 = new String("hello"); 
        String ss1 = "hello";              //指向同一常量池
        String ss2 = "hello"; 
        System.out.println(s1==s2);
        System.out.println(ss1==ss2);
        
        String t1= "a";
        String t2= t1 + "b";
        String t3= "a" + "b";
        System.out.println(t2== "ab");  //t1 是final类型字符串 不能改变,如要改变要创建新对象 t2是新对象
        final String tt1="a";
        String tt2=tt1+"b";             //编译器优化把能确定的tt1当成了"a" 所以tt2=tt1+"b" 成了tt2="ab";
        System.out.println(tt2=="ab");
        System.out.println(t3== "ab");  //编译器把String t3= "a" + "b"; 优化成String t3="ab";
        
        String s = "a" +"b" + "c" + "d";
        System.out.println(s =="abcd");//只生成一个对象"abcd"
    }

}

 

以上是关于char *s;s="ABCDEF";为啥不是正确的进行赋值字符串操作啊?的主要内容,如果未能解决你的问题,请参考以下文章

正确填充字符指针

如何获取一个unsigned char*类型的字符串长度

用递归的方法实现判断回文字符c语言

c#字符串如何转换成字符串数组?比如"abcdef"成 string[] s="ab","cd","ef"

java中如何将一个字符串赋给一个数组

在 char 指针上使用 strcpy 时程序中止? (在 char 数组上工作正常)