字符指针

博客介绍了指针的概念,指出指针是存放地址的变量,其大小因平台而异,且有类型之分,类型决定步长。还讲解了字符指针的使用,通过练习题说明不同方式初始化指针和数组时内存分配情况,如常量字符串初始化指针会指向同一块内存,初始化数组则开辟不同内存块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针的概念:
1、指针就是一个变量,用来存放地址,地址唯一标识一块内存空间。
2、指针的大小是固定的字节数,32位平台为4个字节,64位平台为8个字节。
3、指针是有类型的,指针的类型决定了指针的±整数的步长
字符指针(char *)
一般使用:

int main(){
	char ch = 'y';
	char *sh = &ch;  //将 ch 的地址放在 sh 中
	*sh = 'y';   // *sh 取 ch 的内容
	printf("%c\n", *sh);
	system("pause");
	return 0;
}

还有一种使用方式:

int main(){
	char *str = "Hello Hots3y !";
	printf("%s\n", str);
	system("pause");
	return 0;
}

代码char *str = "Hello Hots3y !";,本质是把字符串 Hello Hots3y 首字符的地址放到了 str 中。
有以下练习题:

int main(){
	char str1[] = "Hello Hots3y!";
	char str2[] = "Hello Hots3y!";
	char *str3 = "Hello Hots3y!";
	char *str4 = "Hello Hots3y!";

	if (str1 == str2){
		printf("str1 and str2 are same\n");
	}
	else{
		printf("str1 and str2 are not same\n");
	}
	if (str3 == str4){
		printf("str3 and str4 are same\n");
	}
	else{
		printf("str3 and str4 are not same\n");
	}
	system("pause");
	return 0;
}

运行界面:
在这里插入图片描述
原因:
str1 和 str2 重新开辟了一段内存空间存放字符串的 Hello Hots3y! 的首地址
str3 和 str4 本质是把一个常量字符串的首字符 H 的地址存放到指针变量中
注意:
这里str3和str4指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当几个指针。
指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值