在c语言中 **表示什么意思?
->是一个整体,它是用于指向结构体、C++中的class等含有子数据的指针用来取子数据。换种说法,如果我们在C语言中定义了一个结构体,然后申明一个指针指向这个结构体,那么我们要用指针取出结构体中的数据,就要用到“->”.
举个例子:
struct Data
{
int a,b,c;
}; /*定义结构体*/
struct Data * p;/*定义结构体指针*/
struct Data A = {1,2,3};/*声明变量A*/
int x;/*声明一个变量x*/
p = &A ; /*让p指向A*/
x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而 p->a == A.a,也就是1*/
对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{
int a;
struct Data * next;
};/*定义结构体*/
…………
main()
{
struct Data * p;/*声明指针变量p*/
……
p = p->next;/*将next中的值赋给p*/
}
链表指针是C语言的一个难点,但也是重点,学懂了非常有用。要仔细讲就必须先讲变量、指针。
扩展资料:链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。
由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。
但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。
链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。
链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。
程序语言或面向对象语言,如C,C++和Java依靠易变工具来生成链表。
参考资料:链表–百度百科
+=的意思就是把左边的第一个符号移到右边,例如:“b+=c”,就是b = b+c的意思。
+=的意思就是把左边的第一个符号移到右边,其实就是b = b+c的意思。直接到b+=c的b+移到右边。b+=c也就是b=b+c 的意思。其实计算的还有很多种的前缀,后缀等等的表达式。就是b=b+c,将b的值取出再取出c的值,相加然后赋给b,存储在b开辟的内存空间中,类似的还有,b-=c、b*=c都是这个意思实际上就是b=b+c的意思之所以用b+=c,是从计算机的运算上考虑,符合计算机内部的计算原理 。 b+=c 的意思就是 b=b+c
*表示指针,**表示指针的指针。
例如:int *a;这个语句声明了一个变量a,a的数据类型是int *,也就是整型变量的指针类型(如果不懂什么是指针,那这个问题就没有意义了)。也就是说 a的值是一个内存地址,在这个地址所在的内存空间中存放的是一个整型变量。再看:int **b;这个语句也声明了一个变量b,b的数据类型是int **,也就是整型变量的指针的指针类型(二级指针)。也就是说 b的值是一个内存地址,该地址所在的内存空间中存放的是一个整型变量的指针(一级指针,或许就是上面那个a的值)。
逻辑关系中的“或”的意思。
即为判断真假的逻辑符号。
符号两边的值如有一个为真,这个表达式的值便为真。
首先任何值都有地址 ,一级指针的值虽然是地址,但这个地址做为一个值亦需要空间来存放,是空间就具有地址 ,这就是存放地址这一值的空间所具有的地址,二级指针就是为了获取这个地址。一级指针所关联的是其值名下空间里的数据,这个数据可以是任意类型并做任意用途,但二级指针所关联的数据只有一个类型一个用途,就是地址,指针就是两个用途提供目标的读取或改写, 那么二级指针就是为了提供对于内存地址的读取或改写。
仁艺苍苓: 参考答案:我是这样认为的:*是指针运算符.我们曾可以这样去定义:int a[10],*p,**s; 如果在下面的语句中出现了*p=a; 这就意味着指针p已经指向数组的首地址,也就是a[0], 此时我们可认为指针p是一级指针. 如果在下面的语句中出现了*s=p, 这就意味着指针s指向了p的单元,而p指向了a[0] 此时s离数组的首地址形象的像隔了2级 因此称s为2级指针. 对于2级指针,有**s=*(*s)=*p=&a[0]
苍梧县18481357415: C语言函数括号中的& *分别表示什么意思? - ?
仁艺苍苓: 函数声明/定义里, * 表示指针. C++ 语言里 &表示引用.C 语言里 没有 “引用”一说. 例如: 声明 int fun(int a, int *b); 参数 *b 是指针. 调用 fun(a, &b); &b 是实参,表示b 的地址. C++ 语言里 getelem(lintlist &l,int e,int *n) -- & 表示引用, 参数 *n 是指针.
苍梧县18481357415: 在c语言中 符号" *& " 在一起去定义是什么意思? - ?
仁艺苍苓: 呵呵,好久没碰这个了,都忘得差不多了.记忆中" *& "的意思应该是表示一个数据,相当于一个基本数据.“&”为取地址,在前面加上“*”则相当于取这个地址中的值,即相当于一个数值.例如:如果没错的话,也就相当于a与*&a是一样的,即“*”与“%”结合后相互抵消掉了.呵呵,也不知道残留在记忆中的是不是正确的,希望能给你点提示、参考吧.
苍梧县18481357415: 在C语言程序中,/*…*/符号中的内容表示的是 ? - ?
仁艺苍苓: 在C语言和C++中, /* (...) */表示注释内容.这部分内容用于对代码的功能、接口进行说明,或对参数等进行说明,它不参与程序的执行和编译,更不会不影响程序的执行结果.
苍梧县18481357415: “*”,这个符号是什么意思? - ?
仁艺苍苓: *是乘. 星形标示号*通常置于有关的词句的左上角或右上角,作为划分文章不同部分的符号成组使用时单独占一行.在电脑中,由于“*”容易和未知数x混淆,所以使用*来代替乘号. 扩展资料: *的其它作用 1、它通常用来做注释符号. 2、用来表示密码,以体现出已输入的字符数量,同时可以避免输入的密码被人看到. 3、也表示某些词语或字无法显示,或不符合词语审查,如具有色情、反动等敏感词会用此符号来屏蔽. 4、用来表示C语言中的指针声明符. 5、如果用于在数学里面的话,相当于一个乘号(/用于分隔而且相当\于除号(÷)) 6、SQL中select * 表示输出结果里包含表里的全部字段. 7、ascii值为42. 参考资料来源:百度百科-*
苍梧县18481357415: 在C语言中两个**是什么意思,如char**Formula; - ?
仁艺苍苓: 一楼回答的和原题不是一个理1 int * 表示只能存放int类型变量的地址如 int a; int * p = &a;其中 p的数据类型是 int *类型因为 数据类型 * 表示只能存放这种数据类型的地址所以例子 int a;int * p = &a;int * * q = &p;q 是int * *类型,只能存放int * 类型数据的地址所以和二楼说的一样,只能存放 int *类型变量的地址
苍梧县18481357415: **(pp 1)在c语言中是什么含义 - ?
仁艺苍苓: “/=”属于复合赋值运算符中的一种,表示把左边的变量除于右边变量的值赋予右边的变量,例如:a/=b等价于a=a/b.同类的还有*=(例如:a*=b等价于a=a*b)、+=(例如:a+=b等价于a=a+b)、-=(例如:a-=b等价于a=a-b)、%=(例如:a%=b等价于a=a%b(这里的%符号是求余运算符,a%b表示求a除于b的余数)).或许你还会问为什么a/=b为什么不直接用a=a/b来表示,这是因为这样的表示方法可以让程序更加简洁.
苍梧县18481357415: C语言中的输入控制格式中带个*号是什么意思?? - ?
仁艺苍苓: %与格式符号之间有*号时,该数据被禁止使用. %*3 *表示,舍弃一串东西中3个输入的东东
苍梧县18481357415: c语言中的*与&是什么意思 - ?
仁艺苍苓: *指针,*p代表地址为P的内存里所存的数据. &代表取a的地址,&a就是a所在的内存地址. * p =&a 可以理解为 在P这个内存段里 存上(记录)a这个数据的实际存储地址. p就是一个内存地址编号,直到你输出他是1502时,咱们才知道他时1502. p+=2 代表P=P+2 所以应该是1504.
苍梧县18481357415: c语言中字母左上方有个"*"是什么意思? - ?
仁艺苍苓: 那是定义的指针类型变量