![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C
雪岢奇
在职员工
展开
-
C语言的指针和数组
1.指针数组:一个数组里存放的都是同一个类型的指针,通常我们把他叫做指针数组。int * a[10];它里边放了10个int * 型变量,由于它是一个数组,已经在栈区分配了10个(int * )的空间,也就是32位机上是40个byte,每个空间都可以存放一个int型变量的地址,这个时候你可以为这个数组的每一个元素初始化,或者单独做个循环去初始化它。一个指针数组中的指针可以为任何同一类型,例如可以为结构指针、函数指针等struct a{ int a; int b;}typedef struct转载 2010-09-20 15:28:00 · 562 阅读 · 0 评论 -
易错小问题
对于C++ const 需要特别注意的小问题,对于一个变量声明为const的尽量不要出做改变,如果必须改变的话,那么程序中使用的应该是该处的地址,而不是直接使用原先的变量,不然的话,用的是编译时期,编译器直接替换的值。代码如下:#include using namespace std;int main(int argc, char* argv[]){ const int原创 2013-01-06 10:16:01 · 514 阅读 · 0 评论 -
Linux系统下的C语言开发都需要学些的知识
一、工具的使用 1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。 2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。 3、掌握gcc和gdb的基本用转载 2012-12-05 16:01:44 · 1052 阅读 · 0 评论 -
Linux下面如何进行C语言编程与makefile 初学
1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的源程序(hello.c): int main(int argc,char **argv) { printf("Hello Linux\n"); }要编译这个程序,我们只要在命令行下执行:转载 2012-12-05 11:33:24 · 2205 阅读 · 0 评论 -
可变参数 函数(可变参列表—2) 实现小型日志文件
va_list arg_ptr:定义一个指向个数可变的参数列表指针; va_start(arg_ptr, argN):使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,说明:argN是位于第一个可选参数之前的固定参数,(或者说,最后一个固定参数;…之前的一个参数),函数参数列表中参数在内存中的顺序与函数声明时的顺序是一致的。如果有一va函数的声明是void va_tes原创 2011-09-15 23:42:32 · 938 阅读 · 0 评论 -
C语言面向对象的构造
1. define the structure of virtual function table view plaincopy to clipboardprint?#ifndef __INTERFACE_H__ #define __INTERFACE_H__ //定义一个虚函数表名称 #define VTBL(iname) iname#转载 2011-11-20 22:10:11 · 703 阅读 · 0 评论 -
C/C++语言void及void指针深层探索
1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误。本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧。 2.void的含义 void的字面意思是“无类型”,void原创 2011-08-27 18:29:36 · 608 阅读 · 0 评论 -
详谈 空指针NULL、野指针、通用指针(1)
关于空指针NULL、野指针、通用指针 首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了。假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x10原创 2011-08-27 15:05:21 · 3529 阅读 · 0 评论 -
可变参数 函数(可变参数列表--1)
1.什么是可变长度参数我们在C语言编程中有时会遇到一些参数个数可变的函数,即函数的入参个数和类型是不确定的,例如printf()函数,其函数原型为:int printf(char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类原创 2011-09-15 23:45:06 · 818 阅读 · 0 评论 -
C/C++ 中的移位操作总结
最近学习过程中发现数据的移位操作很是重要,因此便需要总结一番。1、什么样的数据类型可以直接移位char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都可以进行移位操作,而dou原创 2011-09-10 08:58:25 · 5046 阅读 · 0 评论 -
函数的返回值问题(返回指针和数组的区别)静态存储区、动态数据区、栈
char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改转载 2011-09-02 16:27:29 · 1010 阅读 · 0 评论 -
delete指针之后应该赋值NULL
首先,C++标准规定:delete空指针是合法的,没有副作用。但是,delete p后,只是释放了指针指向的内存空间。p并不会自动被置为NULL,而且指针还在,同时还指向了之前的地址。 问题来了,对一个非空指针delete后,若没有赋NULL,若再次delete的原创 2011-08-27 15:36:41 · 5758 阅读 · 1 评论 -
C/C++ 宏带来的奇技淫巧
C/C++ 宏带来的奇技淫巧 今天在使用宏来传递可变参数时遇到无法正确传递问题,在网上搜索到如下文章,共享之。众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语原创 2012-09-12 21:35:54 · 1291 阅读 · 0 评论