第11章 字符串和指针
示例代码:
示例代码11-1
/*
用数组实现的字符串和用指针实现的字符串
*/
#include <stdio.h>
int main(void)
{
char str[] = "ABC"; // 用数组实现的字符串
char *ptr = "123"; // 用指针实现的字符串
printf("str = \"%s\"\n", str);
printf("ptr = \"%s\"\n", ptr);
return (0);
}
示例代码11-2
/*
用数组实现的字符串和用指针实现的字符串的相同点
*/
#include <stdio.h>
int main(void)
{
int i;
char str[] = "ABC";
char *ptr = "123";
for (i = 0; str[i]; i++)
putchar(str[i]); // str[i]是第一个字符之后的第i个元素
putchar('\n');
for (i = 0; ptr[i]; i++)
putchar(ptr[i]); // str[i]是第一个字符之后的第i个元素
putchar('\n');
printf("str = \"%s\"\n", str); // str是指向第1个字符的指针
printf("ptr = \"%s\"\n", ptr); // ptr是指向第1个字符的指针
return (0);
}
示例代码11-3
/*
字符串赋值(?)
*/
#include <stdio.h>
int main(void)
{
char str[] = "ABC";
char *ptr = "123";
str = "DEF"; // 错误:不能这样赋值
ptr = "456"; // 正确:指向另一个字符串字面量
printf("str = \"%s\"\n", str);
printf("ptr = \"%s\"\n", ptr);
return (0);
}
示例代码11-4
/*
用数组实现的字符串和用指针实现的字符串(其二)
*/
#include <stdio.h>
int main(void)
{
char str[6] = "ABC"; // 用数组实现的字符串
char *ptr = "123"; // 用指针实现的字符串
printf("str = \"%s\"\n", str);
printf("ptr = \"%s\"\n", ptr);
return (0);
}
示例代码11-5
/*
用“数组实现的字符串”的数组和“用指针实现的字符串”的数组
*/
#include <stdio.h>
int main(void)
{
int i;
char st[3][6] = {"Turbo", "NA", "DOHC"};
char *pt[3] = {"12345", "12", "1234"};
for (i = 0; i < 3; i++)
printf("st[%d] = \"%s\"\n", i, st[i]);
for (i = 0; i < 3; i++)
printf("pt[%d] =