c中内存

电流高电位:1
低电位:0
1字节=8二进制位
32bit最大4G内存
地址总线32位,也就是寻址空间是32位
32位指:给内存的编号只能编到32个二进制位
32根地址总线 每一根有0,1两种状态,32根就有2^32种状态
2^32=2^10*2^10*2^10*2^2=1014*1024*1024*4字节=1024*1024*4k=1024*4M=4G
操作系统
给内存做编号
给内存做一定规划
在64位操作系统里
认为程序员使用的内存只要前面48位就Ok了
49到64位由操作系统使用

全局变量,常量在数据段
绿色区域是动态可分配的内存

 1 #include <stdio.h>
 2 int global=0;
 3 
 4 int rect(int a,int b){
 5     static int count=0;
 6     count++;
 7     global++;
 8     int s=a*b;
 9     return s;
10 }
11 
12 int quadrate(int a){
13     static int count=0;
14     count++;
15     global++;
16     int s=rect(a,a);
17     return s;
18 }
19 
20 int main(){
21     int a=3;
22     int b=4;
23     int *pa=&a;
24     int *pb=&b;
25     int *pglobal=&global;
26     int (*pquadrate)(int a)=&quadrate;
27     int s=quadrate(a);
28     printf("%d\n", s);
29 }

gcc -g p.c -o p

gdb ./p
(gdb) p rect
$7 = {int (int, int)} 0x4004c4 <rect>
(gdb) p &rect
$8 = (int (*)(int, int)) 0x4004c4 <rect>
(gdb) p rect(2,3)
$9 = 6
(gdb) p rect==&rect
$10 = 1
gdb) p *rect
$17 = {int (int, int)} 0x4004c4 <rect>
(gdb) p rect==*rect
$18 = 1

 

#include <stdio.h>
int main(){
    int a=3;
    int b=2;
    int array[2];
    array[0]=1;
    array[1]=10;
    array[2]=100;
    int *p=&a;
    int i;
    for(i=0;i<6;i++){
        printf("*p=%d\n",*p);
        p++;
    }
    printf("-----------------------------\n" );
    p=&a;
    for(i=0;i<6;i++){
        printf("*p[%d]=%d\n",i,p[i]);
    }
}

 

posted @ 2017-09-06 22:36  H&K  阅读(130)  评论(0)    收藏  举报