C
qq_30943863
这个作者很懒,什么都没留下…
展开
-
指针数组与数组指针
int** p[10] :p是一个有是个元素的数组,数组的每一个元素是int**类型,初始化如下所示 int* (*p)[10]:p是一个指针,指向一个拥有十个元素的数组,这个数组的每一个元素是int*的类型 int (**p)[10]:p是一个二级指针,指向一个指针,这个指针指向一个拥有十个元素的数组,这个数组的每一个元素为int类型,初始化如下 一原创 2017-10-15 22:24:09 · 175 阅读 · 0 评论 -
指针转换
一、变量指针 当我们初始化一个指针或给一个指针赋值时,赋值号(=)的左边是一个指针,赋值号(=)的右边是一个指针表达式,在绝大多数情况下,指针的类型和指针表达式的类型是一样的,指针所指向的类型和指针表达式所指向的类型是一样的。 例一: 1、 float f=12.3; 2、 float*fptr=&f; 3、 int *p; 在上面的例子中,假如我们想让指针p指向实数f转载 2017-10-15 22:38:33 · 2238 阅读 · 1 评论 -
sizeof
void func(char str1[8]) { const char* str2 = "hello"; char str3[] = "he"; printf("%d,%d,%d,%d", sizeof(str1), sizeof(str2), sizeof(str3), sizeof("hello")); } 数组在作为函数参数传递过程中,会退化成指针。这也是为什么指针作为参数传递原创 2017-10-15 22:55:51 · 218 阅读 · 0 评论 -
大端小端问题
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。 小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。原创 2017-10-15 23:01:05 · 189 阅读 · 0 评论 -
C++类中的静态变量
可以通过以下几个例子更形象的说明这个问题://test.cpp #include class A { public: static int a; //声明但未定义 }; int main() { printf("%d", A::a); return 0;} 编译以上代码会出现“对‘A::a’未定义的引用”错误。这是因为静态成员变量a未定义,也就是还没有分转载 2017-10-15 23:45:30 · 7439 阅读 · 0 评论 -
C语言中内存分布及程序运行中的BSS段、数据段、代码段、堆和栈
1. 栈(stack):又称堆栈,栈是由编译器自动分配释放,存放函数的参数值,局部变量的值等(但不包括static声明的变量,static意味着在数据段中存放变量)。除此之外,在函数被调用时,栈用来传递参数和返回值。由于栈的先进后出的特点,所以栈特别方便用来保存/恢复调用数据。其操作方式类似于数据结构中的栈。 2. 堆(heap):堆是用于存放进程运行中被动态分配的内存段,它的大小,并不转载 2017-10-16 20:44:04 · 1212 阅读 · 0 评论 -
程序运行时内存的各种数据段
1.bss段 该段用来存放没有被初始化或初始化为0的全局变量,因为是全局变量,所以在程序运行的整个生命周期内都存在于内存中。有趣的是这个段中的变量只占用程序运行时的内存空间,而不占用程序文件的储存空间。可以用以下程序来说明这点,文件名为bss.c [cpp] view plain copy #include int bss_转载 2017-11-19 21:12:18 · 2169 阅读 · 0 评论