现在位置: 首页 > c++
2018-12-15 19:33 工业·编程 ⁄ 共 1192字 暂无评论
为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型;size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 2. string::size_type 类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int 3. 使用的时候可以参考:    string::size_type  a =123;  &#...
阅读全文
void AddToTail(ListNode **head,int value){     ListNode *newNode = new ListNode();     newNode->data=value;     newNode->next=NULL;     if(*head==NULL)         *head=newNode;     else{         ListNode *tempNode = *head;     &...
阅读全文
2018-11-14 16:13 工业·编程 ⁄ 共 951字 暂无评论
先看下面这个例子: struct Test {    int Num;    char *pcName;    short sDate;    char cha[2];    short sBa[4]; }*p; 假设p 的值为0x100000。如下表表达式的值分别为多少?    p + 0x1 = 0x___ ?    (unsigned long)p + 0x1 = 0x___?    (unsigned int*)p + 0x1 = 0x___? 相信会有很多人一开始没看明白这个问题是什么意思。其实我们再...
阅读全文
2018-11-13 16:05 工业·编程 ⁄ 共 1414字 暂无评论
int main() {    char a[5]={'A','B','C','D'};    char (*p3)[5] = &a;    char (*p4)[5] = a;    return 0; } 上面对p3 和p4 的使用,哪个正确呢?p3+1 的值会是什么?p4+1 的值又会是什么?毫无疑问,p3 和p4 都是数组指针,指向的是整个数组。 &a 是整个数组的首地址,a是数组首元素的首地址,其值相同但意义不同。在C 语言里,赋值符号“=”号两边的数据类型必须是相同的,...
阅读全文
初学者总是分不出指针数组与数组指针的区别。其实很好理解: 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。 数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指向数组...
阅读全文
优先级:()>[]>* 首先我们要说的一个知识点是 int (*p)[3]   因为()优先级高,首先说明p是一个指针,指向一个int型的一维数组, 数组有3个元素,每个元素是一个int型整数 简单来说,就是int (*p)[3]是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已  int *p[3]  [ ] 优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,指针数组本身就是个数组,只不过这个数组...
阅读全文
2018-11-08 15:15 工业·编程 ⁄ 共 215字 暂无评论
int array[3][4] = {...}; 区分array+1 和&array+1。 array+1是从array算起,按int[4]类型的大小,向前移动一步,此时array+1的值指在array[1]处。 而&array+1是从array算起,按int[3][4]类型的大小,向前移动一步(此步很大,整整扩过了二维数组), 此时&array+1的值指在二维数组array的界外。因为&array明确指示编译器,要将加一的步长按二维数组计。
阅读全文
2018-11-07 15:08 工业·编程 ⁄ 共 182字 暂无评论
数组是不可以整体赋值的,但常常需要用到数组的赋值,以避免写循环。这能否做到? C语言中能赋值的只有变量,只要让数组变量化,变量赋值时岂不捎带将数组完成了赋值?! 能含有数组的类型只有结构体。于是可以: struct name {     int array[10]; }a, b; 于是,在a = b;时就完成了数组的赋值。 注意:切不可“自赋值”,那会造成“内存重叠”,其结果是未定义的。  
阅读全文
2018-11-06 15:00 工业·编程 ⁄ 共 227字 暂无评论
比如,构造一个共用体: union KeyCode {         short int keynum;         char byte[2]; }kc; 当用kc接受接盘输入的字符时,计算机将把它转换成一个双字节的整数编码,其中Byte[1]存放的是高字节的值,是键盘的扩展码; Byte[0]存放的是低字节的值,即ASCII码;而keynum则是它的整体值。 用类似的方法可以解析多个字节的内存变量的高低字节的值...
阅读全文
下面给出一个解决方案: 首先定义一个枚举类型,用以标识共用体中哪个成员是可用的: enum widget_tag {count_w, value+w, name_w}; 然后再用结构体将共用体和枚举包装起来: struct WIDGET {     enum widget_tag tag;     union     {         long count;         double value;    &...
阅读全文