字符数组 字符指针

指针是什么?说白了就是存放地址的变量!
 
#include <stdio.h>

#include <unistd.h>

#include <fcntl.h>



int main(int argc, char* argv[])

{

	//初始化法一

	char buff_first[4] = {'a', 'b', 'c'};

	printf("buff_first %s\n", buff_first);

	buff_first[0] = 'd';

	printf("buff_first change %s\n", buff_first);



	char buff_second[4] = {'a', 'b'};

	printf("buff_second %s\n", buff_second);

	printf("buff_second[2] %s\n", buff_second[2]);

	printf("buff_second[3] %s\n", buff_second[3]);



	char buff_third[4] = {'a', '\0', 'b'};

	printf("%s\n", buff_third);



	//初始化法二

	char buff_fourth[4] = "ab";

	printf("%d\n", strlen(buff_fourth));



	//初始化法三

	char buff_fifth[4] = {"ab"};



	char buff_sixth[] = "abcd";



	return 0;

}
 
  

输出:

buff_first abc
buff_first change dbc
buff_second ab
buff_second[2] (null)
buff_second[3] (null)
a
2

 

 

#include <stdio.h>

#include <fcntl.h>



int main(int argc, char* argv[])

{

	char* pbuff;

	pbuff = "abc";

	printf("pbuff %s\n", pbuff);

	printf("字符指针的地址&pbuff %x\n", &pbuff);

	printf("字符指针所指字符串常量的首地址&pbuff[0] %x\n", &pbuff[0]);

	

	pbuff = "cde";					//可以改变字符指针的指向。

	printf("可以改变字符指针的指向pbuff %s\n", pbuff);

	printf("字符指针的地址&pbuff %x\n", &pbuff);

	printf("字符指针所指字符串常量的首地址&pbuff[0] %x\n", &pbuff[0]);



	//pbuff[1] = 'x';				//这句是错的,不能通过指针改变字符串常量

	//即"abc"  "cde"是两个字符串常量存在不同的内存区域中,字符指针可以指向这两个不同的字符串,

	//但不能改变字符串常量。

	

	char buff[20] = "xyz";

	printf("buff %s\n", buff);

	buff[1] = 'c';					//这里"xyz"是变量,可以改变。

	printf("可以改变字符数组内的字符buff %s\n", buff);

	printf("字符数组名地址&buff %x\n", &buff);

	printf("字符数组首地址&buff[0] %x\n", &buff[0]);



	//buff = "ijk";					//错误,字符数组名是常指针,不能改变其指向。

	return 0;

}

 

输出:

pbuff abc
字符指针的地址&pbuff 12ff7c
字符指针所指字符串常量的首地址&pbuff[0] 42201c
可以改变字符指针的指向pbuff cde
字符指针的地址&pbuff 12ff7c
字符指针所指字符串常量的首地址&pbuff[0] 422ff4
buff xyz
可以改变字符数组内的字符buff xcz
字符数组名地址&buff 12ff68
字符数组首地址&buff[0] 12ff68

你可能感兴趣的:(数组)