C语言 学习历程
文章平均质量分 75
mhjcumt
这个作者很懒,什么都没留下…
展开
-
函数传递数组 例子
函数传递数组的问题void fun(char b[10]) { int i = sizeof(b); char c = b[3]; }如果数组b 真正传递到函数内部,那i 的值应该为10。但是我们测试后发现i 的值竟然为4!为什么会这样呢?难道数组b 真的没有传递到函数内部?是的,确实没有传递过去,这是因为这样一条规则:C 语言中,当一维数组作为函数参数的时翻译 2012-07-09 23:02:57 · 1695 阅读 · 0 评论 -
C语言函数指针参数也是传值调用
先看看下面一段代码:#include #include void F(int *pi){ pi = (int *)malloc(sizeof(int));}main(){ int *pi = NULL; F(pi); printf("%d/n", pi == NULL);}如果你指望函数F能帮你改变pi的值,那你就错了转载 2012-07-09 23:18:35 · 6346 阅读 · 0 评论 -
C语言判断数据存储时大端模式还是小端模式
C语言判断数据存储时大端模式还是小端模式所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8bit。但是在C语言中除了8bit的转载 2012-06-28 22:46:40 · 1988 阅读 · 0 评论 -
C语言 指针与数组
.数组名声明中:当我们声明一个数组时,编译器将根据声明所指定的元素数量及类型为数组保留内存空间,然后再创建数组名,编译器会产生一个符号表,用来记录数组名和它的相关信息,这些信息中包含一个与数组名相关联的值,这个值是刚刚分配的数组的第一个元素的首地址(一个元素可能会占据几个地址,如整型占4个,此处是取起始地址)。现在声明一个数组:int ia[100]; 编译器此时为它分配空间,假设第一个数组元转载 2012-07-09 22:22:02 · 3338 阅读 · 1 评论 -
函数指针 指针函数
A),char * (*fun1)(char * p1,char * p2);B),char * *fun2(char * p1,char * p2);C),char * fun3(char * p1,char * p2);后两个都不难理解,那么第一个是什么呢?这里fun1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。翻译 2012-07-09 22:55:52 · 1272 阅读 · 0 评论 -
C语言指针强制类型转换
概要:C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型。例如,定义如下:int a; float b;翻译 2012-06-28 22:47:15 · 141224 阅读 · 19 评论 -
内存分配
内存分配方式 ---------------------------------------------------------------------------------------------内存分配方式有三种: --------------------------- (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。 例转载 2012-07-16 20:44:31 · 1545 阅读 · 0 评论 -
C语言指针的初始化和赋值
1、指针的初始化指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以是变量,也不可以直接用整型地址值(但是int*p=0;除外,该语句表示指针为空)。此时,*p只是表示定义的是个指针变量,并没有间接取值的意思。例如:int a = 25;int *ptr = &a;int b[10];int *point = b; int *p = &b[0];原创 2012-06-28 22:46:55 · 223139 阅读 · 28 评论