关于c语言char的用法问题 假如 char = 'a'; char *p[] ="abc","d

关于c语言char的用法问题
假如
char = 'a';
char *p[] ="abc","def";
这两句能讲解下蛮,char不是只能覆一个字母吗,怎么下面能覆字符串了,最后能写成
char = "abc";蛮
刚学c有点晕了

char *a[]是错误的,只能定义char *a[任意整数];
或者char *a[4或者其他整数或者不填]=“abc”;
或者char *a[3或者其他整数或者不填]={'a','b','c'};
或者char *a[2或者其他整数或者不填]={"abc","cde"};
或者char k,j,l,*a[3]={&k,&j,&l};
char (*)a[]也是错误的,只能定义为(char *)a[任意整数];
首先说下第一个,以char *a[4];为例, 这语句是定义一个指针型数组,他的元素都是指针。指针是可以直接来指向一个字符串的,用法是char *p="good。指针型数组中每个元素都是指针,则每个元素都可以去定义一个字符串或者是定义一个变量;所以如果有一个a[4][4]={"aaa","bbb","ccc","ddd"}; 现在就可以用char *p[4]={"aaa","bbb","ccc","ddd"}; 这样的好处是节约了空间,一个数组被定义下来后,内存就被分配了,如果这个数组在后面的语句中不再使用了,那它就占着空间,使得源文件很大,如果使用指针数组,就很容易解决这个问题了,因为只要让指针数组在指向其他的字符串或者其他的一些变量 ,这样原来的空间就被释放了
(char *)a[4]的意思是将指针型数组a中的元素a[4]强行转化为char类型
希望能够帮助到你,望采纳!
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-03-16
第一个 是指单个字符
第二个 是指指针数组,相当于一个2维字符数组
字符数组中可以放的字符,数量受*p[]的[]的数字控制,由于这里没有数字就已初始赋值时,字符个数最大的个数计数

关于c语言char的用法问题 假如 char = 'a'; char *p[] ="abc","d
char *a[]是错误的,只能定义char *a[任意整数];或者char *a[4或者其他整数或者不填]=“abc”;或者char *a[3或者其他整数或者不填]={'a','b','c'};或者char *a[2或者其他整数或者不填]={"abc","cde"};或者char k,j,l,*a[3]={&k,&j,&l};char (*)a[]也是错误的,只...

C语言中char的用法
C语言中char用于定义字符类型变量或字符指针变量,例如“char a;”则定义了变量a是字符类型,“char *a;”则定义了变量a是字符指针类型。char是C语言整型数据中比较古怪的一个,其它的如int\/long\/short等不指定signed\/unsigned时都默认是signed,但char在标准中不指定为signed\/unsigned,编译器可以实现为...

C语言指针与字符串的问题,char **p={"abc","defg","hijkl"};怎么把大...
但是我觉得你这种定义不能通过编译的,二维数组初始化的时候可以用大括号,指针只能指向指定的内存,你定义char **这种类型就算定义成功了那p+1又该指向哪儿?这个是一个很纠结的问题,虽然没试,但经验告诉我,你的代码很危险

C语言里 char **p; char *a[2] = {"abc","def"}; *p和**p有什么不...
p表示指针,即有一个储存单位p用于储存一个数据(如字符)的地址。p表示指示指针的指针,即这个储存单位p储存了一个 指示另一个数据地址的指针 的地址。

定义指针数组char *a[]={"abc","def"}是对的, 为什定义整型的是错的...
a[],a是指针数组,数组中的每个元素是个指针,因此用char *a[]={"abc","def"}初始化是可以的。{1,2,3}这是常量整型,虽然每个数字都有自己的实际地址,但他们的组合不是一个数组。这样让一个指针指向一个没有统一首地址的一堆数字是错误的。可以先定义一个二维数组,然后让指针指向它。int ...

c语言中,这两句话都有错误,为什么? char *p=”abcdef”; float *pip=...
指针存放的是地址,不是值!应写成这样char *p;*p=”abcdef”; float *pip;*pip=3.134;

char a[]="abcd"
关于LZ的问题:a本身的值确实只是一个const char*类型的地址。但C++中cout是被定义好的一个类的对象,它和运算符“<<”连用时<<发生重载,语义被解释为输出<<右端指示的字符串。具体是通过运算符重载实现,类似于调用函数,只是右操作数作为地址被传入这个函数,然后函数内解析地址进行输出。注意重载是...

c语言char可以存多少个字符
C语言中,char是一个字符类型的关键字。如果利用char定义一个变量,那么只能存放一个字符;如果利用char定义一个数组或字符指针,那么存放的字符个数根据用户分配的内存空间来定。

C语言中,char a[] = "abc"; char *p = "cdef";
char a[] = "abc"; 中a是数组名,编译时为其分配4个char单元,前3个单元用“abc"中的字符对应初始化,最后一个存放'\\0';char *p = "cdef";在编译时先生成"cdef"字符串常量,存放在常量区,并将首地址(c的地址)赋给char *型指针变量p。从以上可见,a是数组,所以其中的元素abc都可变,...

【总结】char *p="abcdef"和char s[]="abcdef"存储在哪里的问题
include <stdio.h>int main(){char *p="abcdef"; \/\/很多书上说:p在栈,“abcdef”在数据区p[2]='W';printf(p);getchar();return 0;}这个程序编译通过,但是问什么程序运行会出错?另一个:#include <stdio.h>int main(){char s[]="abcdef";\/\/s在栈,“abcdef”在数据区s[2]=...

相似回答