c和指针
随风起舞1
这个作者很懒,什么都没留下…
展开
-
c经典例子______01
已知strcpy函数的原型是char* strcpy(char* strDest,const char*strSrc);1,不调用C++/C的字符串库函数,请编写函数strcpy2,strcpy能把strSrc的内容复制到strDest,为什么还要返回char* 的返回值。1,char* strcpy(char* strDest,const char* strSrc){as原创 2013-11-17 23:43:19 · 625 阅读 · 0 评论 -
c和指针(3)
#include "stdio.h"int main(){char* a10[] = {"a10","b","c"};char* a11[] = {"a11","b","c"};char* a12[] = {"a12","b","c"};char* a13[] = {"a13","b","c"};char** b10[] = {a10,a11,a12,a13};char* a20原创 2014-02-17 17:10:15 · 490 阅读 · 0 评论 -
c和指针(2)
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2014-02-17 12:53:28 · 480 阅读 · 0 评论 -
c和指针(1)
指针和数组并不相同1,什么是声明,什么是定义?2,数组和指针是如何访问的? X = YX :代表X所代表的的地址,称为左值。左值在编译时可知。Y :代表Y所代表的的地址的内容,称为右值。右值直到运行时才知。c标准规则:规则1:表达式的数组名(与声明不同)被编译器当做一个指向该数组第一个元素的指针。规则2:下标总是与指原创 2014-02-17 12:36:44 · 521 阅读 · 0 评论 -
预处理与const
1.1 宏定义例题1:用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。解析: #defne 语法的基本知识(如:不能以分号结束,括号的使用) 要懂得预处理器将为你计算常数表达式的值,因此,写出你是如何计算一年中有多少秒而不是计算出实际的值,会更有意义。 最重要的是,意识到这个表达式转载 2013-12-07 18:21:42 · 667 阅读 · 0 评论 -
堆、栈、静态区
Linux 中的进程主要包括3个段,分别为“数据段”、“代码段”、“堆栈段”。 数据段:存放的数据为全局变量、常数以及动态数据分配的数据空间(如malloc 函数分配的空间)等。 代码段:存放的是程序代码数据。 堆栈段:存放的是子程序返回地址、子程序的参数以及程序的局部变量。 在C/C++编译的程序占用的内存分为以下几个部分:转载 2013-12-07 18:20:40 · 449 阅读 · 0 评论 -
枚举变量的大小是多少?
在《C语言深度剖析》这本书中留有一个问题,枚举变量的大小是多少?1、大家猜一下下面这段程序红色部分输出的结果是多少?2、在printf(char *fmt.....)函数里,如需打印枚举变量里的某个域值如何表示枚举变量里面的成员? #include int main(){ enum Color { GREEN转载 2013-12-07 18:14:32 · 720 阅读 · 0 评论 -
剖析static关键字
C语言深度解剖》---static关键字一、static修饰变量1.1 修饰局部变量静态局部变量: 在函数体内部定义,所以只能在函数体内调用,其他地方是绝对访问不了的,而被static修饰的变量总是在内存的静态区,即使这个函数运行结束,这个静态变量的值也不会被销毁,函数在下次被调用时就会用到上一次保留的值。1.2修饰全局变量静态全局变量:转载 2013-12-07 18:18:37 · 563 阅读 · 0 评论 -
C/C++中static关键字详解
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将只在转载 2013-11-18 23:12:20 · 651 阅读 · 0 评论 -
c和指针(4)
#include "stdio.h"int main(){ int *p ,*q; int a[10]={2,2,3,3,4,5,5,6,6,7}; int b[2][3]={ {1,2,3,}, {4,5,6}, }; int (*s)[3] = b; p= (int*)(&a+1); q= (int*)(a+1); printf("p =%d, q = %d\n",原创 2014-02-18 15:52:26 · 529 阅读 · 0 评论