void是什么 将void指标变数赋值给另一个指标变数时,系统不会自动对该void指标做型别转换。这句话对吗?

将void指标变数赋值给另一个指标变数时,系统不会自动对该void指标做型别转换。这句话对吗?
将void指标变数赋值给另一个指标变数时,系统不会自动对该void指标做型别转换。这句话对吗???
对于C语言来说 会做型别转换的。
不过对于C++来说 不会做型别转换,需要自行做强制转换。
所以 这句话是否正确 是要看语言的。
指标变数给指标变数赋值什么意思
指标变数就是用来储存指标的变数。如 int i,j,*p,*q; 定义了整型变数i和一个指标变数p,i用来存放一个整数,p用来存放一个指标,但这个指标指向一个整型变数。p=&i; 则把i的地址(即一个指标)存放到变数p中,指标p就指向了变数i;同理p=&j; 则p指向了变数j。当 q=p; 时,就是指标变数p给指标变数q赋值,就是把储存在变数p中的指标储存到变数q中去。如果p原来指向j,则q也就指向j了。
指标变数赋值
我想你的t是指标,t=0,意思是说指标t指向0这个位置,*t=100意思是说t指向的位置的值是100
这里要分清两个地址,指标地址(可以用数字表示比如前面的t=0,得有地方放指标阿)
和指标指向的地址(也就是说*t=100之前t是有指标地址的,这个指标地址所指向的位置叫做指标指向的地址,*t=100是把这个指标地址所指向的一块地方储存100这个数字)
解释的够清楚了
用0给指标变数赋值
关于 指标变数 int *p;
有两个概念。一是指标自己,指标自己的单元,用来存放它要指向的资料的地址,另一个是被指向的资料存放单元。
要分清,你打算给谁赋值,你打算给被指向的资料存放单元赋值,还是给指标自己赋值。
我想,你要给被指向的资料存放单元赋值。
刚声明了 int *p; 的时候, 这个指标有了自己的单元,可用来放地址,但这时,这个单元里,并无地址。
所以,在向“被指向的资料存放单元赋值”前要初始化,给它一个地址:
int *p;
int a;
p = &a;
上面把a的地址给了指标,存放在“指标自己的单元”
好了,初始化完成了,可以给被指向的资料存放单元赋值了
*p = 0;
printf("%dn",*p); 打出结果。
能不能赋NULL ? 在你没有确认NULL是什么以前,答复是“不能!”
NULL是巨集,<stdio.h> 在不同行定义了:
#ifndef NULL
#define NULL 0
#define NULL ((void *)0)
随程式执行路线不同,定义不同
为确保 NULL 是0, 要在标头档案之后 加
#define NULL 0
覆蓋掉老定义。
编译器也许允许你未初始化指标便可用 *p = ...。从语法说是错的(会有警告错误)。
Pascal 指标变数赋值
这个程式的意思就是:
建立一个连结串列,其中每一个单位包含3个变数key、count、next,其中,key是表示这个单位代表的字母,count是表示这个字母的出现次数,而next是指向下一个单位。head变数是连结串列的头指标,就是它之后连线若干个单位,最后连线上“#”,所以每次操作都必须要从“头”开始(w:=head)。sentinel是尾指标,就是最后一位。在search中的定义可能你不明白,因为在sentinel^.key:=x后,它就while w^.key<>x do w:=w^.next,也就是说w把连结串列中的每个单位都回圈了一遍,如果sentinel^.key不赋值为x的话,就有可能w回圈到sentinel这个尾指标后,还要继续w:=w^.next,这样就会超出范围。于是到了后面,如果w^.key<>sentiniel的话,就表示这个连结串列里有这个字母,就把w^.count+1,否则,就是出现了一个新的字母,要往连结串列里加入这个字母。加入是怎么做的呢,还是那句话,从“头”开始。它的加入思路是这样的:把现在的这一个连结串列放著不动,把要加入的字母放在连结串列的最前面,再把两者连线起来,就形成了一个新的连结串列。
最后的输出,还是那句话,从“头”开始,先w:=head,然后回圈整个连结串列,直到w=sentinel(到达连结串列的尾部)。
指标等于指标变数,指标变数等于指标??
指标,出现在C语言中的用意就是可以高效访问记忆体
在C语言中,指标的使用都需要先申明一个指标变数
从这个概念上来讲
指标就是一个指标变数,指标变数就是一个指标
c中void指标不能指向某变数??
整个程式中你没写出P指向了哪里,它只指向了随机的东东。printf("%d",*p);改为printf("%d",*(int*)p);看看
指标变数赋值方式
int i1,i2,i3;
(1)int *p1=&i1,*p2=i2; 用整形变数的地址给基型别为整形的指标变数赋值
(2)p1=&i3; 给指标变数赋予变数的地址;
(3) p1=p2; 通过指标变数给指标变数赋值;
指标变数可以指向指标变数吗
当然可以,其实二维阵列就是指向指标的指标(形如 a[5][5],其中a本身就是指向指标的指标,而形如b[5],b本身是指标,指向定义的型别)
p = p->next;将指标向后移
============================================
指标变数就是说指标啊,当你int a=5; 然后 int *p=&a; 那么a和p都是变数,a是整型,p是指标型别,a里面存的是数值5,p里面存的是a的记忆体地址。其实都是变数。
#define NULL 0 的意思是把 NULL 替代为0,编译器在编译的时候把你程式码里所有的NULL替代为数字0; 你光#define NULL只是宣告一个NULL,基本上毫无用处。
do while 和 while do对你这段程式码来说是没有差别的,因为同样是在指标移动以后(也就是p=p->next)判断指标是否指向NULL,如果指向NULL了就中断回圈。并且你能保证第一次输出的时候p不指向NULL,所以就可以先do再判断了。有些时候程式码的逻辑是先做某事,看结果再决定是否继续做同样的事,这就是do-while,有些逻辑就是先判断是否要满足条件,再决定是否做某事,这就是while-do。差别只在是否先进行第一次回圈。
L为sqlist型别指标变数???(指标问题)
sqlist *L;
L就是指标,L的值是一个地址,那个地址上存著一个sqlist物件,换句话说L指向一个sqlist物件
我不知道你要什么例项,既然你已经在看结构体,总知道指标是什么吧?L不过就是个指标而已,和int*一样
p=(char*)malloc(sizeof(x));
malloc函式用来分配记忆体,分配的大小就是引数,sizeof(x)表示x占据的记忆体大小。malloc返回的是一个void*,所以要转换成我们需要的指标,这里就是(char*)
问题是你对之前的指标似乎并不完全清楚,所以。。。
sqlist *local(....)是一个函式,函式名字是local,引数被你省略了,返回型别是sqlist * 也就是sqlist的指标。依然是指标,所以就归结为一个问题,你没有理解指标。建议去仔细看书~