关于#c++#的问题,请各位专家解答!


#include 
#define MaxSize 10

typedef struct{
    int *data;
    int length;
}SqList;

void InitList(SqList &L)
{
    L.length = 0;
}

bool ListDelete(SqList &L,int i,int &e) //i为位序; e为用来存放被删除的元素 
{
    if(i<1 || i>L.length)
        return false;
        
    e = L.data[i-1];
    for(int j =i;j<=L.length;j++)
    {
        L.data[j-1] = L.data[j];
        
    }
    L.length--;
    return true;
 } 

int main()
{
    SqList L;
    InitList(L);
    L.data[0] = 1;
    L.data[1] = 2;
    L.data[2] = 3;
    L.data[3] = 4;
    L.length = 4; 
    int del ;  // 用变量e,把删除值带回来
    bool ret = ListDelete(L,2,del);

    if(ret)
    {
        printf("%d\n",del);
    } 
     else
     {
         printf("位序i不合法,删除失败\n");
     }
    
    return 0;
}

data只是一个指针,没有分配空间啊


void InitList(SqList &L)
{
    L.data = (int *)malloc(sizeof(int)*MaxSize);
    L.length = 0;
}

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7631960
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:C++ 线程与进程常用函数以及使用示例
  • 除此之外, 这篇博客: 一篇文章带你初识C++中的 命名空间的使用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 命名空间的使用有三种方式:
    加命名空间名称及作用域限定符
    使用using将命名空间中成员引入
    使用using namespace

    //1.使用命名空间名称及作用域限定符
    int main()
    {
    	 printf("%d\n", N::a);
     	 return 0; 
    }
    //2.使用using将命名空间中成员引入
    using N::b;
    int main()
    {
     	printf("%d\n", N::a);
     	printf("%d\n", b);
     	return 0; 
    }
    //3.使用using namespace 
    using namespce N;
    int main()
    { 
    	printf("%d\n", N::a); 
    	printf("%d\n", b); 
    	Add(10, 20);
        return 0;
     }
    

    在C++中我们开头总是写using namespace std; 很多人压根不知道这句话的意思,这里的std就是命名空间,当然这句话的意思就是使用标准命名空间

  • 您还可以看一下 张立铜老师的C++入门基础精讲视频课程中的 数组的介绍小节, 巩固相关知识点