c语言中的指针问题,求解答,C语言中的指针问题,求解答

2020-12-11 21:07:00 字数 5994 阅读 6529

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语言还有所谓的 对齐...