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++阅读全文
2018-11-03 14:45
⁄ 工业·编程
⁄ 共 1307字
设计一个函数:
void find1(char array[], char search, char *pa)
要求: 这个函数参数中的数组array是以\0值为结束的字符串,要求在字符串array中查找与参数search给出的字符相同的字符。如果找到,通过第三个参数(pa)返回array字符串中首先碰到的字符的地址。如果没有找到,则为pa为NULL。
依题意,实现代码如下。
void find1(char [] array, char search, char *pa)
{
for (int i = 0; *(array + i) !=...
指针阅读全文
2018-11-02 14:41
⁄ 工业·编程
⁄ 共 386字
1.在栈区建立数组,指向常量区数据的字符串
char *cPioint[3]={"111111","2222222","3333333"};
这种用法可以通过二级指针进行传参
void PrintfStr(char **cpoint);
当想访问“111111”时的时候
采用以下两种方法
1)printf("%s",cpoint[0]);
2)printf("%s",*(cpoint+0);
2.手动在堆区分配空间
char **chPoint=(char**)malloc(counts*sizeof(char*));
for(i=0;i<c...
指针阅读全文
2018-11-01 14:16
⁄ 工业·编程
⁄ 共 2477字
一、概念
在如下的A指向B、B指向C的指向关系中:
首先
C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。
B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B里面的内容就是0x00000008。
那么到此为止都比较好理解:
B= 0x00000008; //B的内容
*B ...
指针阅读全文