`

字符数组

 
阅读更多

      在C语言中,看如下两个式子有何不同?

      char* p1="hello";
      char p2[]="hello";

    对于第一个式子:是无需开辟内存空间存储"hello",字符串常量存储在静态区(好像是),p1是一个指针直接指向该区域的这个字符串常量即可。

    对于第二个式子:需要专门开辟6个字符的内存区域(最后一位是'\0')以存储"hello"。

 

2.字符指针当做字符数组使用的办法:

 

 //开辟3个char的空间,最后一个为'\0'
char* p=(char*)malloc(sizeof(char)*3); 
//但是给它超过三个元素位置都赋值也没问题呀?
//答:虽然可以溢出式的赋值但是可能出现未知的问题,但是p[0]到p[2]之间的是安全的!!!
        p[0]='h';
	p[1]='h';
	p[2]='h';
	p[3]='h';
	p[4]='h';
	p[5]='\0';
	
	printf("%s\n",p);

//结果:
hhhhh

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics