标题:
C语言指针和数组,问了多次还是不明白,请高手来看看哈
[打印本页]
作者:
macboa
时间:
2021-12-24 22:32
标题:
C语言指针和数组,问了多次还是不明白,请高手来看看哈
1> char arrc[][5] = { {'0','0','0','0','\0'},{'0','0','0','0','\0'}, {'0','0','0','0','\0'}, {'0','0','0','0','\0'}, {'0','0','0','0','\0'} };
2> char* ptrc[5] = { {'0','0','0','0','\0'}, {'0','0','0','0','\0'}, {'0','0','0','0','\0'}, {'0','0','0','0','\0'}, {'0','0','0','0','\0'} };
3> char arrs[][5] = { "0000","0000","0000","0000","0000" };
4> char* ptrs[5] = { "0000","0000","0000","0000","0000" };
1.请问这四种方式有什么不同?
2.请问字符串就是字符数组+空字符这种说法正确吗?书上都是这么说,但如果正确的话,为什么第2个赋值是错误的?
3.如果把1和2的值改成下面这样呢?也就是在'\0'后面再加一个'0',会被截断吗?但是访问的话,可以访问到这个'0'啊!
{ {'0','0','0','0','\0','0'}, {'0','0','0','0','\0','0'}, {'0','0','0','0','\0','0'}, {'0','0','0','0','\0','0'}, {'0','0','0','0','\0','0'} };
感谢!
作者:
13205495918
时间:
2021-12-25 08:45
13都是二维数组,34是指针数组,数组里面的每一个元素都是指针。你最好找本书c或者c++仔细看看这里。"abcd"和'a''b''c''d''\0'是一样的,拆开写最后一个是结束符。
作者:
glinfei
时间:
2021-12-25 10:31
指针和数组在使用过程中比较类似,但不能像数组在定义时赋值。
简单理解,指针要给它地址,而{'0','0','0','0','\0'},无法转换成一个字符指针类型的值,所以报错。数组定义时,已经分配了地址(或者说存储空间),所以只要保存字符就行了。
但你可以这么用 char* ptrc =arrcr; 实质是将字符数组(左值)第一个元素的地址取出来,然后存在字符指针类型的变量里。也就是说,能存在p中的值只能是字符指针类型的值。
另外,习惯字符串后面再加一个'0',只要为了程序判断结尾方便,并不是'\0'必须在后面,你后边你爱用啥都行,但写程序判断或显示时,不方便。
作者:
macboa
时间:
2021-12-25 21:19
glinfei 发表于 2021-12-25 10:31
指针和数组在使用过程中比较类似,但不能像数组在定义时赋值。
简单理解,指针要给它地址,而{'0','0','0' ...
讲解非常明确!!!感谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1