#include<stdio.h> int k=7,m=5; void f(int **s) { int *t=&k; s=&t;*s=&m; printf("%d,%d,%d\n",k,*t,**s); } main() { int i=3,*p=&i,**r=&p; f(r); printf("%d,%d,%d\n",i,*p,**r); } //运行结果7,5,5 3,3,3
这里的s=&t;是什么意思?不用&为什么会错?*s=&m;又是什么意思?而且屏蔽*s=&m;后结果怎么不一样,屏蔽之后再把s=&t改为*s=t;好像结果也一样。还有什么其他全部的赋值的,列一下?
#include<stdio.h> int k=7; void f(int **s) { int *t=&k; *s=t; printf("%d,%d,%d\n",k,*t,**s); } main() { int i=3,*p=&i,**r=&p; f(r); printf("%d,%d,%d\n",i,*p,**r); } //运行结果7,7,7 3,7,7
这个例子和上面相似,都是两个二级指针做参数,但是结果却不一样为什么?还有二级指针做实参时为什么是f(r);而不可能是f(*r);或是其他的可能。总感觉有一些本人不会的知识点,希望哪个高手给本人详细说说,十分感想。
解决方案
10
二给指针就是指向一级指针的指针
s=&t 就是取t的地址,t是一个一级指针,&t得到一个二级指针
不用&类型不同竟然会报错,一个是int*,一个是int**
s=&t 就是取t的地址,t是一个一级指针,&t得到一个二级指针
不用&类型不同竟然会报错,一个是int*,一个是int**
30
理论上不可以有啥指回问题。
改变二级指针指向,只好用三级指针做形参,传递二级指针的地址。
C++可以用指针的引用做形参。
,,,,,,,,,,,,,,,,,
话说,C,C++给程序员一定的灵活性,
代价是本人控制逻辑,本人检查问题,
编译器对这种灵活的技巧,
不支持,也不反对
全靠本人保证没问题。
改变二级指针指向,只好用三级指针做形参,传递二级指针的地址。
C++可以用指针的引用做形参。
,,,,,,,,,,,,,,,,,
话说,C,C++给程序员一定的灵活性,
代价是本人控制逻辑,本人检查问题,
编译器对这种灵活的技巧,
不支持,也不反对
全靠本人保证没问题。
5
对任何开发语言,都需要
本人控制逻辑,本人检查问题,
编译器对程序员使用灵活的技巧,
不支持,也不反对
全靠本人保证没问题。
区别仅仅是五十步笑百步而已。
本人控制逻辑,本人检查问题,
编译器对程序员使用灵活的技巧,
不支持,也不反对
全靠本人保证没问题。
区别仅仅是五十步笑百步而已。