C和C++指针的指针是什么类型?
占用多少位的地址空间?不同类型可以互相赋值吗?这样代码有错吗?要怎么改?voidInitList(SqList**L){*L=(SqList*)malloc(sizeof...
占用多少位的地址空间?不同类型可以互相赋值吗?
这样代码有错吗?要怎么改?
void InitList(SqList **L)
{ *L=(SqList *)malloc(sizeof(SqList));
*L->length=0; // *L要不要加括号?
}
SqList * P =NULL;
InitList(&P); 展开
这样代码有错吗?要怎么改?
void InitList(SqList **L)
{ *L=(SqList *)malloc(sizeof(SqList));
*L->length=0; // *L要不要加括号?
}
SqList * P =NULL;
InitList(&P); 展开
展开全部
指针占据多少空间需要看系统, 32位系统就是32位, 64就是64位.
可以sizeof(int*)
不同类型的指针占据的空间是一样多的, sizeof(int*)和sizeof(double*)大小一样.
虽然大小一样, 但是语法不允许直接赋值, 需要强制转换, 这是为了防止程序员在无意之间犯错误.
这样代码有错吗?要怎么改?
要加个括号, (*L) ->length;
在不确定要不要加括号的情况下, 那么最好加上, 这样代码的可读性也会比较好.
可以sizeof(int*)
不同类型的指针占据的空间是一样多的, sizeof(int*)和sizeof(double*)大小一样.
虽然大小一样, 但是语法不允许直接赋值, 需要强制转换, 这是为了防止程序员在无意之间犯错误.
这样代码有错吗?要怎么改?
要加个括号, (*L) ->length;
在不确定要不要加括号的情况下, 那么最好加上, 这样代码的可读性也会比较好.
更多追问追答
追问
void InitList(SqList **L)这样定义和InitList(&P)这样调用可以吗?
SqList 是一个结构,SqList **L表示什么类型的指向什么类型的指针呢?
*L是什么类型,L又是什么类型呢?
追答
(1) void InitList(SqList **L)这样定义和InitList(&P)这样调用可以吗?
可以. P的类型是SqList*, 对P取地址就是SqList**, 参数匹配
(2) SqList 是一个结构,SqList **L表示什么类型的指向什么类型的指针呢?
SqList**是指针的指针, 指向一个SqList*,
SqList**需要2次解引用才会成为SqList类型
(3)*L是什么类型,L又是什么类型呢?
void InitList(SqList **L) // L是SqList**类型
*L是SqList* 类型, **L是SqList, 每解引用一次指针层数减一
展开全部
1、指针的指针,是个记录单重(一个*)指针变量首地址的指针变量;
2、与计算机位数有关:16位计算机,2Byte;32位,4B;64位,8B;
3、象char ** p1;
int **p2;
将P2赋值给P1,不允许,也没意义
2、与计算机位数有关:16位计算机,2Byte;32位,4B;64位,8B;
3、象char ** p1;
int **p2;
将P2赋值给P1,不允许,也没意义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0. 所有的指针都是一个4字节的整数。任何类型的指针之间总可以进行强制转换,就是因为它们在内存中所占空间是一样的。
1. 变量:声明
T v;
变量的值(右值,类型是T)被存储在内存中某个地址(左值,类型是T*)空间中。
2. 指针:声明和使用
T * ptr;
ptr = &v;
指针变量的值(右值,类型是T *,是其所指向变量的地址)被存储在内存中某个地址(指针变量的左值,类型是T **)空间。
3. 二级指针(指针的指针):声明与使用
T * * ptrPtr;
同2,二级指针变量的值(右值,类型是T **,是所指一级指针的地址)被存储在内存中某个地址(左值,类型是 T ***)空间。
4. 同理可以有三级指针...
5. 由2、3、4可知,指针(无论一级、二级……指针)都是用于存储地址的,所以,不同类型的指针之间总可以强制转换。因此,某些函数用void *类型的指针作为形参,而在函数内部,可以根据需要转成任意数据类型的指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
short int * * ppi; //这是一个指向指针的指针,注意有两个*号
ppi=π
第一句:short int * * ppi;——申明了一个指针变量ppi,这个ppi是用来存储(或称指向)一个short int * 类型指针变量的地址。
第二句:&pi那就是取pi的地址,ppi=π就是把pi的地址赋给了ppi。即将地址值10赋值给ppi。
ppi的值是多少呢?——10。
*ppi的值是多少呢?——6,即pi的值。
**ppi的值是多少呢?——50,即I的值,也是*pi的值。
呵呵!不用我说太多了,我相信你应明白这种指针了吧!
ppi=π
第一句:short int * * ppi;——申明了一个指针变量ppi,这个ppi是用来存储(或称指向)一个short int * 类型指针变量的地址。
第二句:&pi那就是取pi的地址,ppi=π就是把pi的地址赋给了ppi。即将地址值10赋值给ppi。
ppi的值是多少呢?——10。
*ppi的值是多少呢?——6,即pi的值。
**ppi的值是多少呢?——50,即I的值,也是*pi的值。
呵呵!不用我说太多了,我相信你应明白这种指针了吧!
追问
我补充了问题,看一下怎么改?
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指针的指针还是指针类型,他是指向一个指针的存储空间的。
比如: int a=100;
int *p=&a;
int **p1=&p;
那么 p1 就是指向p的存储空间,也就是说,*p1 存放的是一个十六进制的常整型数a的地址
p 里存放的是 a的地址, *p得到就是 a的值,即 100
**p1 也可以得到 100
指针是指向一个变量的存储空间的变量,变量中存放的是一个长整型数,所以一个指针变量所占的内存空间是4字节。
指针变量用来指向一个变量的存储位置,那么就要求,一个指针要指向什么类型的变量,就必须把这个指针变量声明成该类型,否则会有错误。
实质上,指针是c、c++中的一种结构型数据类型,和结构体,共用体等一样,属于用户自定义数据类型。
定义一个指针的时候,首先要用类型名 * 表示这是一个指针
比如: int a=100;
int *p=&a;
int **p1=&p;
那么 p1 就是指向p的存储空间,也就是说,*p1 存放的是一个十六进制的常整型数a的地址
p 里存放的是 a的地址, *p得到就是 a的值,即 100
**p1 也可以得到 100
指针是指向一个变量的存储空间的变量,变量中存放的是一个长整型数,所以一个指针变量所占的内存空间是4字节。
指针变量用来指向一个变量的存储位置,那么就要求,一个指针要指向什么类型的变量,就必须把这个指针变量声明成该类型,否则会有错误。
实质上,指针是c、c++中的一种结构型数据类型,和结构体,共用体等一样,属于用户自定义数据类型。
定义一个指针的时候,首先要用类型名 * 表示这是一个指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询