1楼:匿名用户
好像有点多此一举,直接使用rsnum就可以了。rsnum 就是数组的首地址了。
如果一定要用指针就是要申明一个指针来赋值。
c语言指针问题,求解答
2楼:伤我中国心
1,*是取值运算符,因为你要判断tt的值的情况,所以要用 *2,tt++相当于
tt=tt+1;这个是指针向后移动,不需要取值,谢谢,望采纳
3楼:匿名用户
你的tt是指针吧。
tt指向的是
地址(比如地址值为:10ff:1000),*tt是取这个地址中存储的数据,
而tt++意思把tt指向的地址值+1,即tt现在指向了(10ff:1001)这个地址,这个地址中存储的下一个数据。
if(*tt>='a'&&*tt<='z') 为什么这里也要* 和刚才的解释是一个意思。
你需要看一汇编,了解一下计算机如何存储数据的,再看这些就是常识了。
4楼:匿名用户
加*号表示指针指向的地址单元数据,不加则表示指针变量的值(也就是所指向的那个变量的地址),例如:如果int t=10, *p; p=&t; 则*p和t等价,其结果都是10,而p则表示变量t的地址,也就是&t。
c语言中指针问题(真的求,搞不懂,求解答)? 5
5楼:匿名用户
第二章temp是一个指针,没有赋值的指针,操作的时候不加*,如果编译器不报警告就可以正常运行。
c语言关于指针的问题,求详细解答
6楼:匿名用户
13:首先a+1是指a[1],然后取*指的是a[1]这个指针+2是第3个元素为6的地址
9:同上:为6
所以答案: d b
一道c语言指针问题,求解答,谢谢啦
7楼:听不清啊
a)*ptr1和*ptr2都是int相加后赋值给intb)int不能赋值给*int,类型不匹配
c)同类型指针赋值
d)*ptr1和*ptr2都是int相乘后赋值给int
8楼:匿名用户
这题是要你搞清楚,int变量
和指针变量的区别,*ptr1和*ptr2都是int类型,ptr1和ptr2是指针变量,不同类型的变量不能赋值。a)两个int相加赋值给int,b)int赋值给指针错了,c)指针变量相互赋值没有问题,d)两个int相乘赋值给int变量没有问题。望采纳~
9楼:匿名用户
那只是一种说法,我们要调取当时的影像一定要翻看以前的回放,他可能说的是回放没有了,这样就会造成黑屏。为什么回放会没有呢,这个我猜大家就都会知道了,一般也就是内部的人知道监控主机的用户名和密码,偷偷的把那部分录像文件删除了,我想大概也就是这样
一道c语言指针的问题 求解答 谢谢 !
10楼:匿名用户
&c和&ca:这两bai个是肯定不相等的du,c是指向字符串的zhi首地址dao即c的值等于字符串的首内地址,而容c本身需要一个地址空间存放即&c(就像i=3,i的值等于3,而&i是存放3的地址)。当把c传入fun时,ca也指向该字符串即ca的值等于c的值的副本,而这个值也许要一个地址空间存放即&ca。
所以他们不相等。
++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。
&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。只是若编写程序验证时,若先验证++ca则验证&ca[1]之前先要ca--。
c和&c:由上知不相等。
11楼:匿名用户
c 和&c不相等,&c 代表整个数组的首地址,c是首元素的地址。&ca 只有当有参数传进来的时候 才有意义。如果 函数 fun(c)这样的话,是相等的。
12楼:匿名用户
&c 和&ca : ca是函数里的只是个变量由你赋给谁++ca 和&c[1] :这两个是两个完全无关的东西、&ca[1] 和 &c[1]:
这版与第一个同理c 和 &c:c是个char变量时权数组,&c是指针赋值用的不相等
13楼:匿名用户
在定义的时候,
bai系统分配空du间给zhic和ca;其实你可以理解成daoc和ca是两条街道内,组数里
面的元素是容街道的小房子,里面的数就是门牌号码。这样好理解吧。。。。
当然,要求是你调用 void fun(char ca[10]){}; 的时候,理解成街道一模一样,房子里面的构造也一样,但是地址不一样。
&c 和&ca 分别表示c街道的第一间房子的地址和ca街道的第一间房子的地址,但是c和ca两条街道地址本来就不一样啊。
++ca 和&c[1]是不相等的,ca的地址和c的地址是不一样的,用回上面的比喻,++ca理解成第一间房子的后面一间房子的地址,&ca[1]理解成ca街道第一间房子的地址。
&ca[1] 和 &c[1] 仿照第一问。
所以&c 和&ca 不相等,++ca 和&c[1]不相等,
c 和 &c 按照我上面的比喻应该是不等的,但是我运行了一下,是相等的!
我想应该是因为,组数的元素存放在地址里,地址是最终的存储位子吧,我也不是很明白,知道后和我说下。。。
c语言中指针的输入输出问题 求解答
14楼:匿名用户
scanf()与printf()实际是两个库函数,它们在头文件里已经被写好了!scanf()需要两参数,一个为字符型的表示输入格式,另一个为指针或地址,它应该指向你所要存储变量的地址!而printf()需要一个字符型参数,表输出的数据和格式,后面要跟上输出列表,后面的列表应该为具体的变量值,而不是指针或地址!
*p值指的是p所指的具体变量!而p是指指针,也就是p所指的变量的地址!所以他们不能乱用,现在应该明白了吧!
就像一个max(int a,int b)函数 他需要两个int 参数如果你给她别的数据,那肯定就是错误的了!
15楼:须忆象骏
第四行的指针变量p是不可以输入的,是由系统分配的。而在第11行的指针就是p在和数组的指针比较,但我认为这样写不好,你可以定int变量来控制循环的次数,这样就不用指针变量了。
c语言指针的赋值问题
16楼:大野瘦子
指针在用要注意初始化,例如:
int *p;
p为指针,地址是未知的,如果直接赋值
*p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。
可以int *p=&a;
或者int *p;
p=&a;
然后再对p进行操作
有错。注意大小写,还有
int a=9;
int *p;
p=&a;//这个是指针指向a
*p=8;
这样就对了。
指针的赋值
int *p;
int a;
int b[1];
p = &a;
p = b;
指针的赋值,“=”的左操作数能够是*p,也能够是p。
当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;
当“=”的左操作数是p时,改变的是p所指向的地址。
数组的变量名b表示该数组的首地址,因此p=b;也是正确的
同类型的指针赋值:
int val1 = 18,val2 = 19;
int *p1,*p2;
p1 = &val1;
p2 = &val2;
p1 = p2; //注意啦,p1指向了val2,而没有指向val1
备注:字符串与指针的初始化和赋值
初始化:
char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址,而并非传递字符串的值。由于,在c语言里面,没有总体处理一个字符串的机制
赋值:cp = "abcdefg";
*cp=”abcdefg” ;//错误!字符串常量传递的是它的首地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。
17楼:林声飘扬
有错注意:用指针变量前,必须对指针变量赋值如:int i, *p1;
p1=&i;
再如:int a, b;
int *p1, *p2;
*p1=10; *p2=100;
但指针变量未赋值,即指针指向未知地址,这样是错误的因此:绝对不能对未赋值的指针变量作“指向”运算。
int a=9,b;
int *p=&b;//必须加上这一句
*p=a;
*p=8;
这样就不会产生错误
18楼:匿名用户
注意大小写!还有
int a=9;
int *p;
p=&a;//这个是指针指向a
*p=8;
这样就对了。
19楼:七先生是游戏鬼才
这个还是比较复杂的,你可以学习一下
20楼:匿名用户
p=&a//把a的地址给指针p
21楼:匿名用户
语法上没错,但可能出现警告,破坏程序其他数据
22楼:浑浓强浩然
p就是一个指针,他指向一个地址,而&p就是p刚才所指向的具体地址,*p是p指向地址里面的东西。也就是值。*p=&a的意思是把a的地址给了*p,这样的话p就指向
(指向a的地址)的地址。对指针赋值必须是int*p=null;或者int
*p;p=null。
c语言中指针加减问题,求解答。
23楼:
首先:float a[10],*p,*q;
p=&a[4],q=&a[7];
那q-p=2(a[4]与a[7]之间有两个元素) ***这里就不对了,q-p = 3 不是等于2,
可以用printf("%d",q-p);看看。
p+3-p = 12 是地址按“字节”排列的位置差,表示p+3和p之间有12个字节
q-p = 3 表示q和p之间有3个float类型的数据,每个占4字节,3x4 = 12 和上面的结果一致
24楼:匿名用户
嗯,没错,对指针的加减运算是以步长为单位的,不过这是对编译器来讲的。但是对于机器来讲,指针也是二进制数据,在机器内对它们进行运算和一般的数据是一样的,只是因为编译器知道它们是指针,所以编译器告诉你的是指针之间的步长。以下是一个测试的程序,应该能说明问题吧,仅供参考:
#include
#include
void main()
25楼:匿名用户
所谓p+3-p=12只是个说法而不是语法。
如果你把地址当整数那么它们的差是12. 如果你把地址当float* 他们的差就是3
26楼:匿名用户
这不是与p+3-p=12矛盾,而是,这个等式本来就不成立好不。学指针的时候会有点糊涂,这个很正常。
你把两个东西混淆了:数组的下标和实际的地址。
float类型的指针,在地址上来说的确是按4字节为单位移动的,但是在数组里面还是一格一格一栋栋饿啊,这个一格的单位是4字节。
p+3-p,你等式左边的算法是在数组里的单位,既一格一格移动;
=12,你右边的是按照地址的实际大小得出的。
两边表示的不是一种单位啊。。。
还有就是这种理论上的东西你越想越糊涂,实际去写一个测试程序,把指针指向的地址打出来看看 不久知道了?
c语言中数组名和指针变量的区别,C语言中数组名和指针的区别
1楼 销 数组名除了sizeof会返回数组大小,其他的实况下是相当于一个指针常量无区别的 指针常量也就是说,不能改变数组名的值,比如int a 10 a a a a 10等都是非法的 c语言中数组名和指针的区别 2楼 匿名用户 数组在当作参数传递时,可以当作指针 当然,参数传递相当于赋值操作,所以用...
C语言中的“行指针”与“元素指针”有什么区别
1楼 键盘雀跃 int a 4 1 2 3 4 a 0 a 1 a 2 a 3 a是一维数组名,代表数组的首地址 也就是a 0 a 1 指针移动2个字节,指向下一个数组元素,就是a 1 int a 3 4 a 4 或a 4 或a 3 4 都可以表示行指针 操作a是二维数组名,代表二维数组的首地址,也...
C语言中,指针占用的空间是多大?和指针类型有关系吗
1楼 指针和其指向的数据类型有关系,你可以用sizeof 来做测试 printf the size of char is d n sizeof int printf the size of char is d n sizeof char 另外,指向结构体的指针就要看具体情况了,c语言还有所谓的 对齐...