指针与数组与结构体

原创 2016年06月01日 16:45:20

全局变量,初始化赋值变量和static变量全在数据段中,编译的时候确定的。

而指针malloc是在堆中赋值,可以free。数组不能free。如果指针是指向数组,这个指针也不能free.

只有是从malloc来的,才能free.

it is different from struct ,struct a have 7 int , a+1 ,offset is 8.int *p; int 型指针, one offset is int.

数组入参是地址,是地址指向的内容变了,地址没变


#include <stdio.h> 

#include <stdlib.h> 
  
void quick_sort(int s[], int l, int r)  
{  
    int i, j, x;  
    if (l < r)  
    {  
        i = l;  
        j = r;  
        x = s[i];
        while (i < j)  
        {  
            while(i < j && s[j] > x)
                j--; 
            if(i < j)   
                s[i++] = s[j];  
      
  
            while(i < j && s[i] < x)   
                i++; 
            if(i < j)   
                s[j--] = s[i];  
  
        }  
        s[i] = x;  
        quick_sort(s, l, i-1); 
        quick_sort(s, i+1, r);  
    }
}


void quick_sortp(int *s, int l, int r)  
{  
    int i, j, x;  
    if (l < r)  
    {  
        i = l;  
        j = r;  
        x = *s;  
        while (i < j)  
        {  
            while(i < j && *(s+j) > x)   
                j--; 
            if(i < j)   
                {
                   *(s+i) = *(s+j);
                   i++;
                } 
      
  
            while(i < j && *(s+i) < x)   
                i++; 
            if(i < j) {
               // s[j--] = s[i];
                 *(s+j) = *(s+i);
                 j--;
            }
        }  
        *(s+i) = x;  
        quick_sort(s, l, i-1); 
        quick_sort(s, i+1, r);  
    }

  
int main(int argc,char * argv[])  
{  
    int a[]={49,38,65,97,76,13,27};
    int *p;
    int l = 0;  
    int r = 6;


    p = (int *)malloc(7*sizeof(int));
    *p=49;
    *(p+1)=38;
    *(p+2)=65;
    *(p+3)=97;
    *(p+4)=76;
    *(p+5)=13;
    *(p+6)=27;


    for(int i=0;i<=r;i++)  
        printf("%4d",*(p+i));
 
  printf("===============\n");  
  //  quick_sort(a,l,r);
    quick_sortp(p,l,r);
 
    for(int i=0;i<=r;i++)  
       // printf("%4d",a[i]);  
        printf("%4d",p[i]);


   printf("\n");
    return 0;  
}

相关文章推荐

C语言结构体里的成员数组和指针(C语言的一个隐晦角落——关于零数组)

C语言结构体里的成员数组和指针(关于零数组) 【转自酷壳网:http://coolshell.cn/articles/11377.html  作者:陈皓】 单看这文章的标题,你可能会觉得好像没什么意...

黑马程序员----C 语言学习笔记之结构体数组,指针,嵌套的使用

------Java培训、Android培训、iOS培训、.Net培训-------- 一、结构体数组概念及定义 1、概念 数组的元素也可以是结构类型。因此可以构成结构型数组。结构数组的每一...

结构体,指向数组指针,对数组的增删,排序,遍历算法

#include #include typedef struct Arr{     int *pArray;        //存放一个指向数组的指针     int cent;       ...

C语言 指针与数组,结构体

# 指针与数组 ##1.数组指针的概念及定义 - 数组元素指针     +一个变量有地址,一个数组包含若干元素,每个数组元素都有相应的地址指针变量可以指向数组元素(把某一元素的地址放到一个指针变量中)...

C语言 指针、结构体、数组

MD5_CTX MD5; MD5Init(&MD5); printf("MD5: %x \n", MD5); printf("&MD5: %x \n", &MD5); printf("MD5...

C语言 与结构体相关 函数 指针 数组

作者 : 万境绝尘 转载请注明出处 : http://www.hanshuliang.com/?post=30 . 结构体概述 : 结构体是 多个 变量的集合, 变量的类型可以不同; -...

c结构体里的数组与指针

/* 访问成员数组名其实得到的是数组的相对地址,而访问成员指针其实是相对地址里的内容 */ struct buf_str { int  length; char buf[0]; }; stru...

结构体中的指针与零长度数组

0长度的数组在ISO C和C++的规格说明书中是不允许的,但是由于gcc 预先支持C99的这种玩法,所以,“零长度数组”在gcc环境下是合法的。 先看下面两个例子。 pzeroLengthArray....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:指针与数组与结构体
举报原因:
原因补充:

(最多只允许输入30个字)