这里剩下的修饰符是char*, 所有它是char* 类型的数组。
char** 是一个双重指针,指向数组地址的指针 eg:char ** pp=&s; *wc想打架为什么用*标识粗斜体 声明变量的时候表示这是一个指针变量:int *p; 赋值的时候表示取内容(值):int a=*p; 形参表示参数类型为指针 实参同赋值 & C语言中叫取地址符,C++中叫引用,莫搞混 出现在赋值语句右侧或是实参的位置,表示取...
因为int类型就是这样存储数据的。这与char跟p没有关系。
char **m=new char*[20]; //给指针分配20个指针(char*)内存 for(i=0; i<20; i++){ m[i]=NULL;//m[i]是char指针,指针本身内存,用new分配 m[i]=new char[10]; //m[i]是指针指向内存的分配 strcpy(m[i],"1000"); // printf("%s\n",m[i]);} } ...
p是二级指针的意思,也就是指针的指针。当然可以用char **p;去定义一个二维char数组。只不过要用到malloc动态申请内存来放二维字符数组。格式如下:include "stdio.h"main(){ char **p;int i,j;int row,rank;//输入二维数组的行数和列数 printf("Please input row and rank:\n");scanf("%d...
不对的,p的值应该是girl字符串的首地址。p是指针,他的类型是char型,指向常字符串girl,*p的值是girl,p的值是girl字符串的首地址。字符指针也可以指向一个字符串,可以用字符串常量对字符指针进行初始化。例如:char *str = "hello" ;这是对字符指针进行初始化。此时,字符指针指向一个字符串...
这样定义是可以的。为了便于你理解,给出分析如下:ptr为一个指向char 类型的指针,它只要指向一个内存地址,里面存储的变量是char类型的,就是可以的,我们用解操作符* ,用*ptr访问该内存里面的内容 ,而test为一个char类型的常量,在系统中有一个内存地址存储test,这一个地址我们不知道在哪,但是...
在这两个表达式中,p都代表指向字符H地址的指针。区别在于:普通指针p可以执行增减和自减操作,并且可以指向其他地方。比如使用char *s="123";后,执行p=s;是合法的。而常量指针p则不能执行增减和自减操作,且不允许改变指向的字符串。因此,表达式*(p+1)='x';在常量指针情况下是合法的,执行后...
char * const p,这个const是修饰p的,表明p是个只读的指针。p指向字符串,并没要求一定是字符串常量。此外,如果是const char * p,那么const 是修饰p所指向的内容,表明p指向的内容是只读的,(注意只读与常量的区别),此时并也不能说p指向字符串常量。如果是const char * const p;那么不仅p...