重拾C,一天一点点_10
来博客园今天刚好两年了,两年前开始学编程。
忙碌近两个月,项目昨天上线了,真心不容易,也不敢懈怠,接下来的问题会更多。这两天调试服务器,遇到不少麻烦。
刚出去溜达了一下,晚上天凉了,现在手感觉凉的有点不灵活了都。大伙多注意身体!
继续我的C。发现个问题,自己的文章排版很丑,以后也要多注意。
printf("hello world");
printf接受的是一个指向字符数组第一个字符的指针。也就是说,字符串常量可通过一个指向其第一个元素的指针访问。
char *p;
p = "hello world"; //将一个指向字符串数组的指针赋值给p。该过程没有进行字符串的复制,只是涉及到指针的操作。C语言没有提供将整个字符串作为一个整体进行处理的运算符。
char s[] = "hello world"; //定义一个字符数组
char *p = "hello world"; //定义一个指针
两种声明的区别:
s是一个仅足以存放初始化字符串及空字符' '的一维数组,数组中的单个字符可以修改。
p始终指向同一个存储位置,其初始值指向一个字符串常量,之后它可以被修改以指向其他地址,如果试图修改字符串的内宅,结果是没有定义的。
//复制字符串
1 #include <stdio.h> 2 void strcpy1(char *s, char *t); 3 4 main(){ 5 char t[] = "hello world"; 6 char s[] = ""; 7 strcpy1(s,t); 8 printf("%s ",s); //hello world 9 } 10 /******将指针t指向的字符串复制到指针s指向的位置,使用数组下标实现***/ 11 void strcpy1(char *s, char *t){ 12 int i = 0; 13 while((s[i] = t[i]) != '