一种特殊的指针

char *str = “hello C language”; str是个指针, 为什么后面是个字符串 不是字符串的地址呢?
这一句话表示,定义了一直指针变量str,这个指针变量里面存放了字符串"hello C language"的首地址。
所以等价于 char str[]=" hello C language "

因为,在c语言里面,字符串的底层实现实际上是字符数组,也就是说字符串的等价定义形式是,char str[6]=" hello C language ";有一个字符\0,str代表的也是字符数组的头指针。字符串在c语言中是个特别的数据类型,初学者不要太钻牛角尖,你目前掌握2种字符串定义方式就可以。

#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
	char aa[]= "A中";
	char *str = &aa;
	int i;
	
	printf("str's len = %d\n", (int)strlen(str));
	printf("str's  = %c\n", str);
	printf("Hex code: \n");
	for (i = 0; i < strlen(str); i++)
	{
		printf("%02x \n", (unsigned char)str[i]);
		printf("%02x \n", (unsigned char)aa[i]);
	}
	printf("\n");
	return 0;
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值