-
示例,在课堂上提问,哈哈。
-
while (*y++)
由于 ++ 运算符的优先级高于 *,因此请先在指针 y 上加 1,然后取出指针 y 指向的字符。
如果字符不是 0 (0),则将循环。
因为字符串数组 a= 是按字符排列的'\0'结局,人物'\0'ASCII 代码值为 0
这是指针 y 指向'\0'结束循环。
return (y-x-1)
y x 是一个指针,它是一个内存地址,y-x-1 通过从两个指针中减去和减去 1 来返回运算的结果。
从实际执行结果来看,返回5
所以 y-x=6
实际上,它实际上被循环了 5 次,但两个指针 y 和 x 之间的差值是 6,因为 ++ 的优先级高于 *。
希望我的对您有所帮助,很高兴与您讨论和学习 C 语言。
C语言的指针相对难以理解,需要大量的练习才能掌握。
-
首先,A中的商店是这样的。
while(*y++)
此指针遍历整个字符串数组,直到'\0'End,在 more ++ 的末尾,所以在 -1 之后。
return(y-x-1);
-
C 函数中的指针。 在这种情况下,你可以暂时理解 main 函数中传递的参数是特定的,并且在你编写的函数中已经修改过了,所以 main 函数也是得到的数据中修改过的数据。 如果不把指针拿走,就好比两个孩子抄作业,无论孩子抄作业如何,作业内容都是一样的。
但只要有指针,就好像别人抄了他的作业,直接写在了作业本上。 抄作业的学生没有自己的作业本,而是用了别人的作业本。 我可以这么说吗?
似乎不清楚,但如果你有任何其他问题,你可以继续问。
-
*y 是指针,所以 while(*y++) 是骨架。
returen() 是函数的返回值,表示您创建的 fun() 的值等于运行后的返回值。
一般来说,它是一个计算长度的程序,你可以找出回报(y-x-1)中的-1是如何来的。
-
指针在使用前应初始化,如果进行分配空间的操作,则其指向的空间会在调用完成后释放(避免内存泄漏),同时应给指针赋值为空值(此赋值操作读为指向,后者读为p指向空) p = null(避免悬空指针),防止字段指针和喜欢。使用指针作为参数时,重要的是要知道您在函数的正文部分修改的值是指针的值还是指针指向的值,两者之间有很大的区别,这取决于您的需求。 如果我们只修改被穿透的指针的值,并且参数的值没有变化,那么我们就可以使用指向指针的指针来完成参数 **p 的更改; 如果是 C++,您也可以为此目的使用 *& 指针引用,但 C++ 方法的成本要低得多。
-
注意:有两种方法可以初始化指针变量:int a, *p=a; 和 int *p,a; p=&a;
注意&和*的区别是地址运算符,*是值运算符 定义指针变量p后,p单独表示取指针,*p表示取内容。
这些东西必须小心使用,而且它们非常容易出错。
-
在选项 b 中的地址上加 5 不仅仅是一个数字加 5。
例如,在 32 位计算机上(指针为 4 个字节),p1 + = 5 实际上将 4 * 5 = 20 添加到该地址编号
c、p1、p2 是 char*,但 &p2 是 char**,因此 c 的赋值类型不正确。
B是对的。
-
b:P1 和 P2 是字符指针变量,根据所引用单元的变量类型的长度自动加减。
C:&P2-- 是一个 char 变量,分配给指针变量 p1,因为两边是不同类型的,一定是错的。
D:指针变量的乘法应该是木制的。
这个问题本身有问题。
结果没有初始化,没有指向任何空格就传递给add函数,这本身就是错误的,当然也可以实现,在add函数中申请一个地址来存储结果,并将地址发回给结果,但是该地址的**是无法控制的, 容易造成内存泄漏。 >>>More
<>在这个程序中,我们首先提示用户输入正方形的尺寸,然后输入正方形的元素。 接下来,我们通过遍历正方形的每一行并使用指针指向每行相应列中的元素来找到正方形矩阵的对角线元素的总和。 最后,我们输出结果。 >>>More