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;
...
c++阅读全文
2018-11-15 16:17
⁄ 工业·编程
⁄ 共 494字
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;
&...
c++, 指针阅读全文
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___?
相信会有很多人一开始没看明白这个问题是什么意思。其实我们再...
c++阅读全文
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 语言里,赋值符号“=”号两边的数据类型必须是相同的,...
c++, 数组阅读全文
2018-11-12 16:01
⁄ 工业·编程
⁄ 共 771字
初学者总是分不出指针数组与数组指针的区别。其实很好理解:
指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身的大小决定,每一个元素都是一个指针,在32 位系统下任何类型的指针永远是占4 个字节。它是“储存指针的数组”的简称。
数组指针:首先它是一个指针,它指向一个数组。在32 位系统下任何类型的指针永远是占4 个字节,至于它指向的数组占多少字节,不知道,具体要看数组大小。它是“指向数组...
c++阅读全文
2018-11-11 15:29
⁄ 工业·编程
⁄ 共 1225字
优先级:()>[]>*
首先我们要说的一个知识点是
int (*p)[3] 因为()优先级高,首先说明p是一个指针,指向一个int型的一维数组, 数组有3个元素,每个元素是一个int型整数
简单来说,就是int (*p)[3]是指一个指向数组的指针,它其实还是一个指针,只不过是指向数组而已
int *p[3] [ ] 优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,指针数组本身就是个数组,只不过这个数组...
c++阅读全文
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明确指示编译器,要将加一的步长按二维数组计。
c++阅读全文
2018-11-07 15:08
⁄ 工业·编程
⁄ 共 182字
数组是不可以整体赋值的,但常常需要用到数组的赋值,以避免写循环。这能否做到?
C语言中能赋值的只有变量,只要让数组变量化,变量赋值时岂不捎带将数组完成了赋值?!
能含有数组的类型只有结构体。于是可以:
struct name
{
int array[10];
}a, b;
于是,在a = b;时就完成了数组的赋值。
注意:切不可“自赋值”,那会造成“内存重叠”,其结果是未定义的。
c++阅读全文
2018-11-06 15:00
⁄ 工业·编程
⁄ 共 227字
比如,构造一个共用体:
union KeyCode
{
short int keynum;
char byte[2];
}kc;
当用kc接受接盘输入的字符时,计算机将把它转换成一个双字节的整数编码,其中Byte[1]存放的是高字节的值,是键盘的扩展码; Byte[0]存放的是低字节的值,即ASCII码;而keynum则是它的整体值。
用类似的方法可以解析多个字节的内存变量的高低字节的值...
c++阅读全文
2018-11-05 14:58
⁄ 工业·编程
⁄ 共 585字
下面给出一个解决方案:
首先定义一个枚举类型,用以标识共用体中哪个成员是可用的:
enum widget_tag {count_w, value+w, name_w};
然后再用结构体将共用体和枚举包装起来:
struct WIDGET
{
enum widget_tag tag;
union
{
long count;
double value;
&...
c++阅读全文