• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 指針的地址分配

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    指針的地址分配: 我們可以定義指針變量指向任何類型的變量。在上述的處理過程中,指針變量指向的變量通過傳遞變量的地址來實現。指針變量的取值是內存的地址,這個地址應當是 安全 的,不可以是隨意的,否則,寫入內存單元的值將會使得已存放的數據或程序丟
    指針的地址分配:


    我們可以定義指針變量指向任何類型的變量。在上述的處理過程中,指針變量指向的變量通過傳遞變量的地址來實現。指針變量的取值是內存的地址,這個地址應當是安全的,不可以是隨意的,否則,寫入內存單元的值將會使得已存放的數據或程序丟失。應使用編譯系統提供的標準函數來實現地址分配。
    ANSI標準建議設置了兩個最常用的動態分配內存的函數malloc()和free(),并包含在stdlib.h中,但有些C編譯卻使用malloc.h包含。使用時請參照具體的C編譯版本。
    我們這里所指的動態內存分配其含義是指:當定義指針變量時,其變量的取值是隨機的,可能指向內存的任一單元。若指針的指向是不安全的內存地址,在該地址空間上的數據交換就會產生意料不到的效果。為此,在程序的執行過程中,要保證指針操作的安全性,就要為
    指針變量分配安全地址。在程序執行時為指針變量所做的地址分配就稱之為動態內存分配。
    當無需指針變量操作時,可以將其所分配的內存歸還系統,此過程我們稱之為內存單元的釋放。
    malloc()用以向編譯系統申請分配內存;free()用以在使用完畢釋放掉所占內存。
    [例6-21]兩個字符串的交換。
    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    main()
    {
    char *ptr1,*ptr2,*temp;
    ptr1=malloc(30);/*動態為指針變量分配長度為30字節的存儲空間*/
    ptr2=malloc(20);
    temp=malloc(30);
    printf("inputstr1:");
    gets(ptr1);/*輸入字符串*/
    printf("inputstr2:");
    gets(ptr2);
    printf("str1------------str2\n");
    printf("%s.......%s\n",ptr1,ptr2);
    strcpy(temp,ptr1);/*串復制*/
    strcpy(ptr1,ptr2);
    strcpy(ptr2,temp);
    printf("str1------------str2\n");
    printf("%s.......%s\n",ptr1,ptr2);
    free(ptr1);
    free(ptr2);
    }
    為指針變量分配的存儲空間長度取決于存放字符的多少。在上述的程序中,兩個串的交換可以通過標準函數strcpy()來完成,也可以通過串指針交換指向完成,用temp=ptr1;ptr1=ptr2;ptr2=temp;三條賦值語句實現。但是,利用指針交換指向,其物理意義與串通過函數進行的復制完全不同。前者是存放串地址的指針變量數據交換,后者是串在內存物理空間的數據交換。指針變量用完后,將指針變量所占的存儲空間釋放。


    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>