C语言指针有关问题?

如图,第二题没懂,求解释。那个t 和 *t 给我整懵了。

需要注意的是,定义时的int *t中的t代表一个内存地址,这个地址指向的是一个整型数据。若有int *t=5 , t表示内存中指向一个整型数据的地址,此时才能单独用*t,就是表示取出t这个地址中所表示的数,那么就是5。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-30
你把指针看成和普通变量一样的东西就好了,指针里存的指针位置,你平时可以做一下实验,什么0146FB50 0146FB80啥的,既然是作为参数被传过去的,那自然一个函数是不可能对另一个函数里的局部变量做出操作的。
那么到底怎么实现传值呢?第一种,引用传值,比如很常见的
void swap(int& x, int& y)
{
int temp = 0;
temp = x;
x = y;
y = temp;
}
其中的&就起引用调用的作用(建议百度传值调用和引用调用),在这个函数里的改变将回传给调用它的地方。(使用的时候填swap(x, y);就好了,xy是int)

第二种方法,我们把两个数据的地址给交换函数,让交换函数把地址所对应的数字改了,例如你说的第二题,可以改成
void fun(char **x, char ** y)
{
char* p = *x;
*x = *y;
*y = p;
}
这样,就可以实现你要的传递功能了
,另外,你题里的那些指针是可以当做数组看的,比如void fun(char*x,char*y)改写成void fun(char x[],char y[])运行也是一点毛病都没有的,这个是c语言的语法糖之一,有个日本作家叫前桥和弥,他写的 征服C指针 建议你去读一下,他用了一本书的篇幅很详细的介绍了指针的前世今生
第2个回答  2020-03-30
改变函数形参的值不影响实参,交换x和y的值对p和q没有影响。追问

嘿嘿,麻烦能具体分析一下题目嘛~

本回答被网友采纳
相似回答