• 百问C/C++



    记录一些c/c++基础的东西!


    1.报错:读取字符串的字符时出错

    原因为数据未初始化,问题发生在这行代码

    char *p;

    指针要初始化的,置为NULL。

    2.0x7A1FA006 (msvcr120d.dll) (Project1.exe 中)处有未经处理的异常:  0xC0000005:  写入位置 0x000BCB78 时发生访问冲突?

    未解决!

    3.数组名是地址,结构体名是什么?

    结构体名可不是地址,而是类似于类名,不占存储空间。

    4.char指针类型也可以通过下标访问

        char *str = "123";
        cout << str[0];
        cout<<*str;//指向第一个字符
        如果想获得第二个字符,可以用*str[1]吗,不行!
        *str[1]执行流程为*(str[1]),str[1]是个数据,不是地址,不能用*。
         (*str)[1]也不行,因为下标要求数组或指针类型。
         正确做法是 cout<<*(str+n);

    5.定义一个char s[10];但未初始化,默认会赋值”烫烫“

      s[1]='a';//这个s数组不是以'\0'结束的,而是”烫“

    6.结构体初始化

    typedef struct
    {
        int a;
        char  king[];
    } KING;

    KING b={1};//{}内类型与结构体内类型匹配的初始化为该值,不匹配初始化为空串。

    7.空指针不是说指针指向的位置值为空,而是说指针本身的值为 0x00000000 {???},即不指向任何地址。

    8.char *str; str="abc";把常量区的字符串"abc"的首地址赋值给了变量str,*str代表a

    9.判断字符串指针所指向字符串大小,应该用strlen而不是sizeof,sizeof计算的是指针本身的大小。

        char str1[7];
        char str2[7] = {1,1,1,1,1,1};
        char *pstr= "12434";
        cout << sizeof(str1) << " sizeof str1" << endl;
        cout << strlen(str1) << " strlen str1" << endl;
        cout << sizeof(str2) <<" sizeof str2"<< endl;
        cout << strlen(str2) << " strlen str2" << endl;
        cout << sizeof(pstr) << " sizeof pstr" << endl;
        cout << strlen(pstr) << " strlen pstr" << endl;

    结果:

    str1未初始化,strlen(str1)值不一定,因为sizeof是遇到终止符才停止。
    sizeof(str2)值为7,但是sizeof(pstr)值为4(32位)

  • 相关阅读:
    使用ssh上传数据到阿里云ESC云服务上
    python经典小游戏:24速算(案例)
    关于C#中的指针拷贝
    Springboot 是这样提高创建 docker 容器的效率的
    GPS北斗时钟服务器(NTP网络时钟系统)施工部署方案
    iOS 16 SwiftUI 4.0 列表(List)项分隔线变短的原因及解决
    MySQL安装
    第1章 人工智能的基础概念与应用导论
    Linux0.11内核源码解析01
    Springboot项目中的异常处理与返回结果的统一
  • 原文地址:https://blog.csdn.net/qq_42362891/article/details/126878923