#include
#include
#define SIZE 81
#define LINE 3
int main(void)
{
const char name[SIZE] = "Hello, my name is sheng."; // 初始化一个大小已经确定了的char数组
char hobby[] = "My favorite sport is basketball."; // 让编译器计算数组大小的初始化数组
const char *age = "eighteen."; // 初始化一个指针
const char * sex; // 对指针分步初始化
sex = "girl";
const char *song[LINE] = // 初始化一个指针数组
{
"Single dog",
"Single dog",
"Single all the day!"
};
puts(name); // 依次打印
puts(hobby);
puts(age);
puts(sex);
for(int i = 0; i < LINE; ++i)
{
puts(*(song + i)); // *(song + i) == song[i]
}
return 0;
}
/*
Hello, my name is sheng.
My favorite sport is basketball.
eighteen.
girl;
Single dog
Single dog
Single all the day!
*/
const char *age = "eighteen."; // 初始化一个指针
age[3] = 'l' // 这种情况是不允许的!
char hobby[] = "My favorite sport is basketball."; // 让编译器计算数组大小的初始化数组
hobby[4] = '\0' // 让数组提前结束,这样做也是可以的。
char name[SIZE];
name = "Hello, my name is sheng.";
这种方法是不被允许的,因为name是数组名,指向的仅仅是第一个数组元素的地址,而这个语句的意思是将字符串的首地址赋给name,这显然是不对的!
为与其对比: const char * sex; // 对指针分步初始化
sex = "girl"; // 这种初始化方法是可以的,因为sex为指针,当把字符"girl"赋值给sex时,表示把这个字符串的首地址赋给sex,这种是被允许的!
a) const char *age = "eighteen.";
// 表示指针age所指向的字符串是一个字符串常量,不能够被修改。而指针的内容可以被修改,即该指针还可以指向其他的字符串。
b) char * const age = "eighteen."; // 表示指针age只能指向这个字符串,不可再用于指向其他的char类型变量。
#include
#include
#include
#define ANSWER "SIMY"
#define MAX 40
char * strupr(char *);
int main(void)
{
char input[MAX]; // 声明一个已知容量的字符串数组,用以存放从键盘上键入的内容。
printf("Who is my lover?\n");
scanf("%s", input);
strupr(input);
while(strcmp(input, ANSWER))
{
puts("You're wrong!");
scanf("%s", input);
}
puts("You're right!");
return 0;
}
char * toup(char * input)
{
while(*(input++))
{
*input = toupper(*input); // 把小写转化成大写
}
return input;
}
#include
char *string(void)
int main(void)
{
char *str=NULL; // 一定要初始化,好习惯
str=string();
printf("%s\n", str);
return 0;
}
char *string(void)
{
char ptr[]="hello world!";
return ptr;
}