首页 > 其他分享 >malloc与指针

malloc与指针

时间:2022-09-27 13:33:21浏览次数:59  
标签:malloc 顺序 int InitList SqList data 指针

1 错误写法

#include <stdio.h>
#include<stdlib.h>

#define MaxSize 10      //定义最大长度
typedef struct{
    int data[10];  //用静态的“数组”存放数据元素 
    int Length;         //顺序表的当前长度
}SqList;                //顺序表的类型定义

//基本操作——初始化一个顺序表
void InitList(SqList *L){
    int i;
    L = (SqList *)malloc(sizeof(SqList));    //分配存放线性空间

    for(i=0; i<10; i++){
        L -> data[i]=1;   //将所有数据元素设置为默认初始值0
    }
    L->Length=0;        //顺序表初始长度为0
}

int main(){
    SqList *L = NULL;          //声明一个顺序表
    InitList(L);       //初始化这个顺序表
    printf("%d",L->data);
    return 0;
}

  在方法中分配空间,

2 正确写法

上面在init函数中,相当于对临时变量形参L(外面的复制)分配了空间,而不是外面的L本身。

把指针传递都看作是值传递,一个是对临时副本进行修改(一级指针),另一个是对临时副本的地址取值后进行修改(二级指针)【真正意义上的修改】。

 
#include <stdio.h>
#include<stdlib.h>

#define MaxSize 10      //定义最大长度
typedef struct{
    int data[10];  //用静态的“数组”存放数据元素
    int Length;         //顺序表的当前长度
}SqList;                //顺序表的类型定义

//基本操作——初始化一个顺序表
void InitList(SqList *L){
    int i;
    for(i=0; i<10; i++){
        L -> data[i]=1;   //将所有数据元素设置为默认初始值0
    }
    L->Length=0;        //顺序表初始长度为0
}

int main(){
    SqList *L = (SqList *)malloc(sizeof(SqList));          //声明一个顺序表,并分配空间
    InitList(L);       //初始化这个顺序表
    printf("%d",L->data);
    return 0;
}

  

标签:malloc,顺序,int,InitList,SqList,data,指针
From: https://www.cnblogs.com/zhukaile/p/16734269.html

相关文章

  • 指针的引用(附加地址传递)
    #图解轻松看懂「指针的引用*&」-知乎(zhihu.com)注意“举个栗子”中的第一个代码:(以一个更为简单的例子为例)情况1:1voidswap(int*p1,int*p2){23int......
  • C++ 数组指针累加后的偏移量
    typedefstruct_MyStruct{ inta; intb; intc; _MyStruct(){a=0;b=0;c=0;}}MyStruct;intmain(){#if1 MyStruct*st[3]; //数组指针 MyStruct......
  • [Oracle] LeetCode 76 Minimum Window Substring 双指针
    Giventwostringssandtoflengthsmandnrespectively,returntheminimumwindowsubstringofssuchthateverycharacterint(includingduplicates)isin......
  • 指针,链表
    虚拟存储器指针是一个数据类型,可以分为指向int的指针类型,指向char的指针类型int*p=&a里面存放着p这个值的内存地址char*p是指向int类型变量a的指针(p指向a)这......
  • BM93,BM94接雨水问题(最大水量maxArea和总水量trapWater问题)(双指针)
    总水量问题BM94trapWater()描述给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个柱子高度图,计算按此排列的柱子,下雨之后能接多少雨水。(数组以外的......
  • 指针常量与常量指针
    1.常量指针:constint*p    /      intconst*p首先,常量指针是个指针,因const修饰而无法使用*ptr=XX改变指向地址的值,但可以同过ptr=&x直接改变指......
  • C语言第17天,字符串与字符指针
    1.字符串常量不可修改#include<stdio.h>intmain(){char*pStr="HelloWorld\n";printf("%s",pStr);pStr[0]='h';//将H变为hprintf("%s",pStr);return0;}我们知道字......
  • C C++指针面试题零碎整理
    最基础的指针如下:inta;int*p=&a;答:p指向a的地址,&是取a的地址。*指的是指针中取内容的符号。2.str[]和str*的区别:charstr1[]="abc";charstr2[]="abc";c......
  • C#教程 - 不安全的代码和指针(Unsafe Code and Pointers)
    更新记录转载请注明出处:2022年9月24日发布。2022年9月10日从笔记迁移到博客。平台互操作说明C#通过4种方式实现直接调用外部代码:通过平台调用(PlatformInvoke,P......
  • 野指针
    原文https://homepea.top/2020/24.C-point/空指针空指针:指针指向的地址为空的指针叫空指针/NULL指针int*p1;p1=NULL;char*p2;p2=NULL;野指针当所指向的对......