人较笨且记性不好,故记录在此.折叠代码打不开请F5.本博中很多是转载收录其他网友的文章(原文地址请见博文末尾),所有权为原作者所有!!!
此博客已不再更新和维护,欢迎关注我的github新博客

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

随笔分类 -  C/C++

上一页 1 2

摘要:利用MFC进行编程时,我们从对话框中利用GetWindowText得到的字符串是CString类型,CString是属于MFC的类。而一些标准C/C++库函数是不能直接对CString类型进行操作的,所以我们经常遇到将CString类型转化char*等等其他数据类型的情况。这里总结备忘于此!首先要明确,标准C中是不存在string类型的,string是标准C++扩充字符串操作的一个类。但是我们知道标准C中有string.h这个头文件,这里要区分清楚,此string非彼string。string.h这个头文件中定义了一些我们经常用到的操作字符串的函数,如:strcpy、strcat、strcmp 阅读全文
posted @ 2011-06-19 12:22 子坞 阅读(16618) 评论(0) 推荐(0)

摘要:对于编译器而言,一个数组就是一个地址,一个指针就是一个地址的地址。什么时候数组和指针是相同的:1、表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针(在表达式中,指针和数组是可以互换的,因为它们在编译器里的最终形式都是指针,并且都可以去下标操作.例对数组的引用如a[i]在编译时总是被编译器改写成*(a+i)的形式);2、下标总是与指针的偏移量相同;3、在函数参数的声明中,数组名被编译器当作指向该数组第一个元素的指针。另外,对第一点的解释:存在几个极少见的例外,就是把数组当作一个整体来使用。如下列情况:1、数组作为sizeof的操作数-显然 此时需要的是整个数组的大小,而不 阅读全文
posted @ 2011-06-12 16:05 子坞 阅读(625) 评论(0) 推荐(0)

摘要:首先,我要说明的,在C语言中,把“多维数组”叫做“数组的数组”更好理解一下。(下面我就统一称之为“数组的数组”)有的教程中喜欢将数组的数组用矩阵表示,不过我更趋向于直线表示,如下图(定义数组的数组int ga[2][3][5])(如果图片太小,建议保存到电脑上对其放大查看)我对数组的数组的理解(以ga[2][3][5]为例): 即为数组的数组,数组里面包含数组,数组作为另一个数组的元素。int ga[2][3][5] ={ga_1[1], ga_1[2]} = {{ga_2[0], ga_2[1], ga_2[3]}, {ga_2[0], ga_2[1], ga... 阅读全文
posted @ 2011-06-11 21:28 子坞 阅读(2222) 评论(0) 推荐(0)

摘要:各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。各成员变量在存放的时候根据在结构中出现的顺序依次申请空间,同时按照上面的对齐方式调整位置,空缺的字节自动填充。同时为了确保结构的大小为结构的字节边界数(即该结构中占用最大空间的类型所占用的字节数)的倍数,所以在为最后一个成员变量申请空间后,还会根据需要自动填充空缺的字节。有四个概念值:1.数据类型自身的对齐值:就是上面交代的基本数据类型的自身对齐值。2.指定对齐值:#progma pack (value)时的指定对齐值value。3.结构体或者类的自身对齐值:其成员中自身对齐值最大的那个值。4.数据成员 阅读全文
posted @ 2011-06-09 20:46 子坞 阅读(185) 评论(0) 推荐(0)

摘要:目录:1、什么是sizeof2、sizeof的用法3、数据类型的sizeof(1)C++固有数据类型(2)自定义数据类型(3)函数类型4、指针问题5、数组问题6、向函数传递数组的问题7、字符串的sizeof和strlen8、从union的sizeof问题看cpu的对界9、struct的sizeof问题10、不要让double干扰你的位域1、什么是sizeof sizeof在msdn上的定义: The sizeof keywordgives the amount of storage, in bytes, associated with a variable or a type(includ.. 阅读全文
posted @ 2011-06-08 15:34 子坞 阅读(1033) 评论(0) 推荐(0)

摘要:在遍历链表时正确释放元素的方法是:使用临时变量存储下一个元素的地址。这样就可以安全的地在任何时候释放当前元素,不必担心在取下一个元素的地址时还要引用它。代码如下:(注意for执行的顺序)struct node *p, *start, *tmp;for(p=start; p; p=tmp){ tmp = p->next; delete(p); p = NULL;} 前提是链表最后的 next被赋值为NULL了,要不然即使 p最后没有数据了还是会执行下去的。 阅读全文
posted @ 2011-06-05 18:04 子坞 阅读(301) 评论(0) 推荐(0)

摘要:1 #include <stdio.h> 2 void main() 3 { 4 int i=4; 5 int*p=&i; 6 //int *p=(int *)4; 7 printf("%d\n",*p); 8 printf("%p\n",p); 9 *p=12;10 printf("%d\n",*p);11 printf("%p\n",p);12 getchar();13 return;14 }当为 int *p=(int *)4的时候会报错。因为 4在内存中没有相应地址映射,p指向的是非法地 阅读全文
posted @ 2011-06-05 16:52 子坞 阅读(1340) 评论(0) 推荐(0)

摘要:c/c++支持可变参数的函数,即函数的参数是不确定的。一、为什么要使用可变参数的函数?一般我们编程的时候,函数中形式参数的数目通常是确定的,在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定,因此c语言引入可变参数函数。这也是c功能强大的一个方面,其它某些语言,比如fortran就没有这个功能。典型的可变参数函数的例子有大家熟悉的printf()、scanf()等。二、c/c++如何实现可变参数的函数?为了支持可变参数函数,C语言引入新的调用协议, 即C语言调用约定 __cdecl 。 采用C/C++语言编程的时候,默认使用这个调用约定。如果要采用 阅读全文
posted @ 2011-03-16 14:23 子坞 阅读(5822) 评论(0) 推荐(0)

摘要:一,问题描述 error LNK2001: unresolved external symbol _WinMain@16 debug/main.exe:fatal error LNK 1120:1 unresolved externals error executing link.exe;二,产生这个问题可能的原因 1. 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain. 2. 你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。三, 解决方法... 阅读全文
posted @ 2011-03-10 11:37 子坞 阅读(3051) 评论(0) 推荐(0)

摘要:相关概念:c++三种传递参数方式传参数的值(称值传递,简称传值),传参数的地址(称地址传递,简称为传址),和引用传递(称为传引用),相应的函数传值调用,传址调用和传引用调用形参、实参函数定义时参数表中的参数称为形式参数,简称形参;函数调用时参数表中的参数称为实际参数,简称实参。实参和形参之间的数据传递称为形实结合说明通常情况下,C++是传值调用,它是单向的,只能从实参到形参。形参实质上市实参的一种拷贝,所以传递时不会改变外部实参的值引用的含义及功能即别名,功能主要是传递函数的参数和返回值引用的规则(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化)。(2)不能有NULL引用,引用 阅读全文
posted @ 2011-01-06 14:49 子坞 阅读(1017) 评论(0) 推荐(0)

摘要:2011年1月5号指针与结构体struct person { char *name; // 姓名 char address[30]; // 家庭地址 int height; // 身高 struct person * next; };声明结构体对象的两种情况:1)指明结构体: struct person John,然后John调用成员"John.name ”。2)指明结构体指针:struct person * Nose,然后Nose调用成员"Nose->name ”,不过在使用Nose之前还得为Nose分配内存"Nose= new person;" 阅读全文
posted @ 2011-01-05 21:11 子坞 阅读(428) 评论(0) 推荐(0)

摘要:在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也可以使用联合体来发挥其长处。首先看一段代码:View Code union myun { struct { int x; int y; int z; }u; int k; }a; int main() { a.u.x =4; a.u.y =5; a.u.z =6; a.k = 0; printf("%d %d %d\n",a.u.x,a.u.y,a.u.z); return ... 阅读全文
posted @ 2010-12-27 11:12 子坞 阅读(3672) 评论(3) 推荐(1)

摘要:比如有东,南,西,北四个方向,你会怎么设计类型呢?用枚举enumDirection{ East,South,West,North};枚举主要用于某些有特定意义的东西浅谈C#中的枚举枚举类型是一种的值类型,它用于声明一组命名的常数。(1)枚举的声明:枚举声明用于声明新的枚举类型。访问修辞符enum枚举名:基础类型{ 枚举成员}基础类型必须能够表示该枚举中定义的所有枚举数值。枚举声明可以显式地声明byte、sbyte、short、ushort、int、uint、long或ulong类型作为对应的基础类型。没有显式地声明基础类型的枚举声明意味着所对应的基础类型是int。(2)枚举成员枚举成员是该.. 阅读全文
posted @ 2010-12-27 10:58 子坞 阅读(3429) 评论(0) 推荐(0)

上一页 1 2