C/C++
onyas
这个作者很懒,什么都没留下…
展开
-
C语言函数传递二维数组的方法
c语言中经常需要通过函数传递二维数组,有三种方法可以实现,如下:方法一, 形参给出第二维的长度。例如:#include void func(int n, char str[ ][5] ){ int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]);}void main()原创 2013-04-30 10:22:24 · 3456 阅读 · 0 评论 -
C/C++内存分配方式与存储区
C/C++内存分配有三种方式:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。程序在转载 2013-06-02 15:00:19 · 8524 阅读 · 0 评论 -
sizeof理解04---sizeof与strlen的区别
Sizeof与Strlen的区别与联系(转)1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof是操作符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。size转载 2013-06-02 14:59:14 · 753 阅读 · 0 评论 -
sizeof理解02---几个结论
首先要明确sizeof不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字,sizeof();括号内在编译过程中是不被编译的,而是被替代类型。如int a=8;sizeof(a);在编译过程中,它不管a的值是什么,只是被替换成类型sizeof(int);结果为4.如果sizeof(a=6)呢,也是一样的转换成a的类型,但是要注意,因为a=6是不被编译的,所以执行完sizeof(a=6)转载 2013-06-02 14:56:22 · 702 阅读 · 0 评论 -
sizeof理解01---内存对齐
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同一些平台对某些特定类型的数据只转载 2013-06-02 14:55:08 · 610 阅读 · 0 评论 -
sizeof理解03---sizeof(struct)
结构体和共用体的内存分配是C语言的一个难点,也是面试题中的热点。示例1:union data1{double d;int i;char c1;char c2[9]; };sizeof(union data1)的值为16.在编译器默认设置的情况下,该共用体最大基本类型为double,它占8字节,所以此共用体以8来对齐。字符数组c2占9个转载 2013-06-02 14:57:28 · 2777 阅读 · 0 评论 -
malloc和free函数学习
一、malloc()和free()的基本概念以及基本用法: 1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。关于分配失败的原因,应该有多种,比如说空间不足就是一种。void free(void *FirstByte): 该函数是将之前用转载 2013-05-10 17:31:42 · 641 阅读 · 0 评论 -
指针数组的应用
以下为自己犯的错误代码#include #define maxsize 3char* test[maxsize];int main(){ char names[maxsize]; int i; for(i=0;i<maxsize;i++) { scanf("%s",names); test[i]=names; //printf("%s\n",test[i]); }原创 2013-05-10 13:54:07 · 720 阅读 · 0 评论 -
不用库函数实现求字符串的长度
int fun(char *x){ char *y = x; while(*y++); return (y-x-1);}原创 2013-05-09 23:47:06 · 2452 阅读 · 1 评论 -
原码,反补,补码
补码和原码的转化过程在计算机系统中,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。 补码与原码的转换过程几乎是相同的。 数值的补码表示也分两种情况: (1)正数的补码:与原码相同。 例如,+9的补码是000010转载 2013-07-25 09:35:28 · 1804 阅读 · 0 评论