想请教一下char* 的意思及用法,谢谢!

乔克叔叔 2012-01-19 12:13:10
本人刚学C++,看的是C++ PRIMIER第四版教材,看到后边发现一种int* char* 这样的用法,例如:char **argv
就让本人感到不解,在函数名前加一个*号我知道是声明为指针,但是在类型后面跟一个*号我就不知道是啥意思了,望各位高手赐教,不甚感激!


初学C++的小弟
...全文
235 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
乔克叔叔 2012-01-24
  • 打赏
  • 举报
回复
谢谢各位!
乔克叔叔 2012-01-23
  • 打赏
  • 举报
回复
十分感谢楼上的各位给力相助!
乔克叔叔 2012-01-23
  • 打赏
  • 举报
回复
可是目前本人在学习的是C++[Quote=引用 19 楼 project2502 的回复:]

看 <<c和指针>>这本书

想其它方法代替是不可能的

c学点语法 做点练习后 可以去看看汇编 可以加深对指针理解
[/Quote]
游戏设计师 2012-01-23
  • 打赏
  • 举报
回复
从编译来看,你写 int* XX 和 int *XX效果是一样~主要是看个人理解和编码习惯~

但是例如 int* XX,YY;如果这么写可能会会理解为 int指针XX和YY~,其实不对是 int指针XX和int YY
int *XX,YY;你可能理解为int指针 XX和int YY,这样就对了~
看看编译原理能更好的理解~
project2502 2012-01-22
  • 打赏
  • 举报
回复
看 <<c和指针>>这本书

想其它方法代替是不可能的

c学点语法 做点练习后 可以去看看汇编 可以加深对指针理解
project2502 2012-01-22
  • 打赏
  • 举报
回复
char* 整个看做一个指针类型 这个指针指向char

乔克叔叔 2012-01-19
  • 打赏
  • 举报
回复
啊,这么详细,连章节都指出来,好的,我学学!谢谢!
yulinlang 2012-01-19
  • 打赏
  • 举报
回复
请仔细阅读C++ Primer第四版第4章 第4.2.3.3节 指向指针的指针。
乔克叔叔 2012-01-19
  • 打赏
  • 举报
回复
我知道这类的用法,但是有些声明却是这样的 char **argv
对于这多出来的一个*号,我就表示难以理解了,请赐教!
mingchaoyan 2012-01-19
  • 打赏
  • 举报
回复
在类型名后加个* 也是指针

另外 你怎么会想学到在函数名前加* 的用法 而没见过 类型名后加* 的用法????????????
codetown 2012-01-19
  • 打赏
  • 举报
回复
定义引用不是这样的么:
ClassName& refObject=object;
乔克叔叔 2012-01-19
  • 打赏
  • 举报
回复
是的,小弟却是没有分清类型和对象。。。有点晕乎了
cp298674954 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 choco918 的回复:]

我附加一个问题行吗,还有个引用问题搞得我很头疼,就是一般的定义引用是&agrv这样的,但是有一些引用却是定义为agrv&,&这个符号被放置到了后面,小弟想请问这是什么类型的引用?

小弟太水了,请各位指教!
[/Quote]

你没有分清楚类型和对象吧
cp298674954 2012-01-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 choco918 的回复:]

我附加一个问题行吗,还有个引用问题搞得我很头疼,就是一般的定义引用是&agrv这样的,但是有一些引用却是定义为agrv&,&这个符号被放置到了后面,小弟想请问这是什么类型的引用?

小弟太水了,请各位指教!
[/Quote]
argv& 你在哪见过 请指教 argv是类型么?
cp298674954 2012-01-19
  • 打赏
  • 举报
回复
你把 char* 看成是一种独立的类型 和 int 一样, 我们可以把 char* 命名成 PCHAR, 这样以后看到PCHAR就代表一个char指针类型 那么 PCHAR* 就是指向这种类型的指针 这样说明白了么?
赵4老师 2012-01-19
  • 打赏
  • 举报
回复
仅供参考
//在堆中开辟一个4×5的二维int数组
#include <stdio.h>
#include <malloc.h>
int **p;
int i,j;
void main() {
p=(int **)malloc(4*sizeof(int *));
if (NULL==p) return;
for (i=0;i<4;i++) {
p[i]=(int *)malloc(5*sizeof(int));
if (NULL==p[i]) return;
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
p[i][j]=i*5+j;
}
}
for (i=0;i<4;i++) {
for (j=0;j<5;j++) {
printf(" %2d",p[i][j]);
}
printf("\n");
}
for (i=0;i<4;i++) {
free(p[i]);
}
free(p);
}
// 0 1 2 3 4
// 5 6 7 8 9
// 10 11 12 13 14
// 15 16 17 18 19
乔克叔叔 2012-01-19
  • 打赏
  • 举报
回复
谢谢楼上的兄弟!另外有人能回答我5楼提出的问题吗?还是我得另开一个帖?
乔克叔叔 2012-01-19
  • 打赏
  • 举报
回复
谢谢楼上的兄弟!有人能回答我5楼时提出的问题吗?还是我得另开一个帖?
codetown 2012-01-19
  • 打赏
  • 举报
回复
char* argv和char argv[]都是存储单个字符串用的,也就是字符数组
char** argv和char* argv[]都是存储多个字符串用的,也就是字符串数组
鲲尘千古 2012-01-19
  • 打赏
  • 举报
回复
char**argv,可以当成char*argv[];这样好理解一些。
加载更多回复(3)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧