#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*
C语言没有字符串类型,通过字符数据模拟
C语言字符串,以字符‘\0’结尾,数字0
*/
int main01()
{
//不指定长度,没有0结束符,有多少个元素就有多长
char buf[] = { 'a','b','c' };
printf("buf = %s\n", buf);//buf = abc烫烫虥??(乱码)
char buf2[100] = { 'a','b','c' };
printf("buf2 = %s\n", buf2);//buf2 = abc
//所有元素赋值为0
char buf3[100] = { 0 };
//char buf4[2] = { '1','2','3' };//数组越界
char buf5[50] = { '1','a','b','0','7' };
printf("buf5 = %s\n", buf5);
char buf6[50] = { '1','a','b',0,'7' };
printf("buf6 = %s\n", buf6);
char buf7[50] = { '1','a','b','\0','7' };
printf("buf7 = %s\n", buf7);
//使用字符串初始化,常用
char buf8[] = "kjgklhjghfh";
//strlen:测字符串长度,不包括字符'\0'
//sizeof:测数组长度,包括字符'\0'
printf("strlen(buf8) = %d, sizeof(buf8) = %d\n", strlen(buf8), sizeof(buf8));
char buf9[100] = "kjgklhjghfh";
printf("strlen(buf9) = %d, sizeof(buf9) = %d\n", strlen(buf9), sizeof(buf9));//11,100
printf("\n");
system("pause");
return 0;
}
int main()
{
char buf[] = "afghkjfklglkfj";
int i = 0;
int n = strlen(buf);
char* p = NULL;
//[]方式
for (i = 0; i < n; i++)
{
printf("%c", buf[i]);
}
printf("\n");
//指针方法
//数组名字,数组首元素地址
p = buf;
for (i = 0; i < n; i++)
{
printf("%c", p[i]);
}
printf("\n");
for (i = 0; i < n; i++)
{
printf("%c", *(p + i));
}
printf("\n");
for (i = 0; i < n; i++)
{
printf("%c", *(buf + i));
}
printf("\n");
//以上输出均合法且相同
//buf和p显然不等价
p++;
//buf++;不合法,因为buf只是一个常量,不能修改
p = 0x1122;
//buf = 0x1122;不合法,因为不能修改
printf("\n");
system("pause");
return 0;
}
字符串的初始化问题
最新推荐文章于 2022-10-21 22:48:46 发布