* const 函数指针typedef 内存分配和存储空间

1、 *  const  函数指针typedef



指针数组 数组指针:



int *p[2];   一个数组    每个元素是指针          指针数组  


    int i=1;
    int j=2;
//p先跟[]结合,然后再跟*结合
    int *pa[2];//指针数组,存放指针的数组
    pa[0]=&i;
    pa[1]=&j;
    printf("%d\n",sizeof(pa));    8




int (*p)[2];  一个指针   指向数组的指针           数组指针            

    int a[3][2];
    int (*p)[2];
    p=a;
    printf("%d %d\n",sizeof a,sizeof pp);   24  4



const判断:  



 (先去掉const看释义;const谁,谁不能更改)


const int *p; <=>  int const *p;   指向const int型的指针  *p不能更改 p可以更改指向其他
int * const r= &n;                 r的值不能更改已经指向n, 但*r=n的值可以更改  



函数指针问题:    




怎么定义一个变量,加typedef即可定义一个类型  (变量类型对应替换) http://bbs.csdn.net/topics/390098150


int i;//i是变量
typedef int i;//i是int的类型别名


int (*fpn)(int);
typedef int (*fpn)(int);


int f(int);
f<->(*fpn) 直接替换f即可定义一个函数指针  


char* a[n];
char* (foo())[n];  error
char* (*foo())[n]; OK
char* (*(*ptr2foo)())[n];
char* (*(*ptr2bar)(int))[n];




char* (*(*ptr2bar)(int *))[n];;
typedef int * P2I;
typedef char* (*(*P2FB)(P2I))[n];



2、结构体和类定义放在头文件中,变量定义放在c或cpp中,需要在其他文件中用的,还要extern到h中


3、内存分配和存储空间



http://blog.csdn.net/gukesdo/article/details/6548256


//main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b;// 栈
char s[] = "abc"; //栈
char *p2; //栈
char *p3 = "123456"; //"123456/0"在常量区,p3在栈上。
static int c =0; //全局(静态)初始化区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
//分配得来得10和20字节的区域就在堆区。
strcpy(p1, "123456"); //123456/0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。
}



text
代码段,这个存放代码的,用汇编角度来看就是指令。
.rdata
只读数据段,存放常量,字符常量,const常量,据说还存放调试信息。
.data
数据段,存放已经初始化好的全局变量和静态变量。除了上面的static变量,还有存储在堆栈段的自动变量,其他所有变量都在.data里,典型的有各类全局变量
.bss
 bss段, 存放未初始化的全局变量和静态变量


.rdata,.data, .text段的(值)都是在编译的时候就确定了,并且将其编译进了可执行文件,经过反汇编都能找得到
.bss 未初始化 需要运行是确定其值; 
.rdata,.text段不可更改  .data .bss 可更改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值