void *str_mid;是一个函数的参数
CString str[10];是一个CListCtl所选定的数据库中的数据
下面这个语句
((char **)str_mid)[i]=str[i].GetBuffer(0);
该语句中(char **)是什么意思呢?
14 个解决方案
#1
就是指针的指针...
int n = 0;
int **p = &(&n);
#2
指针的指针
#3
强制转换
#4
就是指针的指针...
void *str_mid;是一个函数的参数
(char **)str_mid 就是把str_mid 强转成char **
例如
char *p ;//char 指针 ,表示p里面发一个char型变量的地址
char **p1;char *指针 ,表示p里面发一个char *型变量的地址
p1 = &p;
void *str_mid;是一个函数的参数
(char **)str_mid 就是把str_mid 强转成char **
例如
char *p ;//char 指针 ,表示p里面发一个char型变量的地址
char **p1;char *指针 ,表示p里面发一个char *型变量的地址
p1 = &p;
#5
str_mid本来是void *类型,将str_mid的类型加上(char **)进行强制转换再进行数组操作,
即((char **)str_mid)[i]是char*类型,正好与str[i].GetBuffer(0); 返回的类型相匹配
即((char **)str_mid)[i]是char*类型,正好与str[i].GetBuffer(0); 返回的类型相匹配
#6
对!指针的指针!
#7
指针是一个地址,也是一个变量
比如
char b='d';
char *c=b;
c是一个指针,c也是一个变量,c中存的是b的地址,*操作符可以取c变量中存的地址中存的数据,因为是char *,所以可以取出d。
char **是指向指针的指针
比如
char **cc=c;
cc是一个指针,cc也是一个变量,cc中存的是指针c的地址,*cc可以取出指针c中存储的地址(这个地址就是变量b的地址),**c就可以取出b中的元素d!
我的理解就是这样
有不对的楼下指出!
比如
char b='d';
char *c=b;
c是一个指针,c也是一个变量,c中存的是b的地址,*操作符可以取c变量中存的地址中存的数据,因为是char *,所以可以取出d。
char **是指向指针的指针
比如
char **cc=c;
cc是一个指针,cc也是一个变量,cc中存的是指针c的地址,*cc可以取出指针c中存储的地址(这个地址就是变量b的地址),**c就可以取出b中的元素d!
我的理解就是这样
有不对的楼下指出!
#8
upup~~~~
#9
#10
将str_mid)[i]强制转换为char型的二级指针。
#11
void *str_mid
这个参数应该要求的原始类型是 char**
在函数里面再转回来而已
比如
void fun(void *str_mid)
{
for (int i = 0; i < 10; ++i)
((char **)str_mid)[i]=str[i].GetBuffer(0);
}
int main()
{
char* str_mid[10];
fun(str_mid);
return 0;
}
这个参数应该要求的原始类型是 char**
在函数里面再转回来而已
比如
void fun(void *str_mid)
{
for (int i = 0; i < 10; ++i)
((char **)str_mid)[i]=str[i].GetBuffer(0);
}
int main()
{
char* str_mid[10];
fun(str_mid);
return 0;
}
#12
各位楼上的说了这么多,lz一定明白了,看见了,也说两句:
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
#13
各位楼上的说了这么多,lz一定明白了,看见了,也说两句:
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
#14
二级指针
指向指针的指针
还有三级的...
char ***pp;
道理一样
指向指针的指针
还有三级的...
char ***pp;
道理一样
#1
就是指针的指针...
int n = 0;
int **p = &(&n);
#2
指针的指针
#3
强制转换
#4
就是指针的指针...
void *str_mid;是一个函数的参数
(char **)str_mid 就是把str_mid 强转成char **
例如
char *p ;//char 指针 ,表示p里面发一个char型变量的地址
char **p1;char *指针 ,表示p里面发一个char *型变量的地址
p1 = &p;
void *str_mid;是一个函数的参数
(char **)str_mid 就是把str_mid 强转成char **
例如
char *p ;//char 指针 ,表示p里面发一个char型变量的地址
char **p1;char *指针 ,表示p里面发一个char *型变量的地址
p1 = &p;
#5
str_mid本来是void *类型,将str_mid的类型加上(char **)进行强制转换再进行数组操作,
即((char **)str_mid)[i]是char*类型,正好与str[i].GetBuffer(0); 返回的类型相匹配
即((char **)str_mid)[i]是char*类型,正好与str[i].GetBuffer(0); 返回的类型相匹配
#6
对!指针的指针!
#7
指针是一个地址,也是一个变量
比如
char b='d';
char *c=b;
c是一个指针,c也是一个变量,c中存的是b的地址,*操作符可以取c变量中存的地址中存的数据,因为是char *,所以可以取出d。
char **是指向指针的指针
比如
char **cc=c;
cc是一个指针,cc也是一个变量,cc中存的是指针c的地址,*cc可以取出指针c中存储的地址(这个地址就是变量b的地址),**c就可以取出b中的元素d!
我的理解就是这样
有不对的楼下指出!
比如
char b='d';
char *c=b;
c是一个指针,c也是一个变量,c中存的是b的地址,*操作符可以取c变量中存的地址中存的数据,因为是char *,所以可以取出d。
char **是指向指针的指针
比如
char **cc=c;
cc是一个指针,cc也是一个变量,cc中存的是指针c的地址,*cc可以取出指针c中存储的地址(这个地址就是变量b的地址),**c就可以取出b中的元素d!
我的理解就是这样
有不对的楼下指出!
#8
upup~~~~
#9
#10
将str_mid)[i]强制转换为char型的二级指针。
#11
void *str_mid
这个参数应该要求的原始类型是 char**
在函数里面再转回来而已
比如
void fun(void *str_mid)
{
for (int i = 0; i < 10; ++i)
((char **)str_mid)[i]=str[i].GetBuffer(0);
}
int main()
{
char* str_mid[10];
fun(str_mid);
return 0;
}
这个参数应该要求的原始类型是 char**
在函数里面再转回来而已
比如
void fun(void *str_mid)
{
for (int i = 0; i < 10; ++i)
((char **)str_mid)[i]=str[i].GetBuffer(0);
}
int main()
{
char* str_mid[10];
fun(str_mid);
return 0;
}
#12
各位楼上的说了这么多,lz一定明白了,看见了,也说两句:
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
#13
各位楼上的说了这么多,lz一定明白了,看见了,也说两句:
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
所谓指针也是变量例char* p; ,只不过此变量存放的是一个地址值,而这个地址值存放的内容可以用*p 获得,
*p的内容可以是常量内容也可以是变量内容,我们通常就会说一个指针指向某个变量,就是这个意思了。
指针是变量,即是变量就有变量类型了,指针的内容为内存地址,所有的指针存放的都是地址值,区分类型就要靠这些地址值里存放的是什么类型的数据了……
char** pp; 就是二级指针,指向指针的指针,pp里存放的就是p的地址,p是一个char型指针,pp就是一个char型指针的指针。
#14
二级指针
指向指针的指针
还有三级的...
char ***pp;
道理一样
指向指针的指针
还有三级的...
char ***pp;
道理一样