字符数组 字符指针

指针是什么?说白了就是存放地址的变量!
 
#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

posted @ 2012-10-04 14:59  helloweworld  阅读(223)  评论(0编辑  收藏  举报