字符指针

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 110;
  4. char s[] = "Hello";
  5. int main(){
  6. char *p = s;
  7. printf("%s\n", s);
  8. printf("%c\n", s[4]);
  9. printf("%c\n", *p);
  10. printf("%c\n", *(p + 4));
  11. printf("%c\n", *p + 4);
  12. cout << p << '\n';
  13. // 需要注意的是,字符串的以“\0”结尾,
  14. // 所以对于“Hello”这个字符串实际上含有6个字符
  15. // 因为表示字符串结尾标志的”\0“是自动添加的。
  16. for (int i = 0; s[i] != '\0'; i++) cout << s[i];
  17. puts("");
  18. return 0;
  19. }
  1. // 字符串的创建,含有多种语法
  2. // 比较重要的一点是初始化时可以不指定数组长度
  3. char duckName[6] = {'D','a','v', 'i', 'd'};
  4. char duckName[6] = "David";
  5. char duckName[] = "David";
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 110;
  4. char s[N];
  5. void f1(char s[]){
  6. printf("%s\n", s);
  7. }
  8. void f2(char *s){
  9. for (; *s != '\0'; s++) printf("%c", *s);
  10. puts("");
  11. }
  12. int main(){
  13. scanf("%s", s);
  14. f1(s);
  15. f2(s);
  16. return 0;
  17. }
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N = 110;
  4. char s[N];
  5. int len;
  6. void f(char *s){
  7. for (int i = 0; i < len; i++) printf("%c", *(s + i));
  8. puts("");
  9. }
  10. int main(){
  11. scanf("%s", s);
  12. len = strlen(s);
  13. f(s);
  14. return 0;
  15. }

指针与字符串

  1. // 字符串的表示形式
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. int main(){
  5. char s1[] = "Hello s1!";
  6. printf("%s\n", s1);
  7. char *s2 = "Hello s2!"; // 把字符串的第1个元素的地址,赋值给了s2
  8. printf("%s\n", s2);
  9. return 0;
  10. }
  11. // %s 是输出字符串时用到的格式符,在输出项中,给出字符指针变量名,则系统先输出它所指的一个字符数据
  12. // 然后自动使 s2 加1,使之指向下一个字符
  13. // 然后再输出一个字符
  14. // 直到,遇到字符串结束标志'\0'为止
  1. // 字符串指针,作为函数参数
  2. // 可以改变字符串里的内容
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. char s[110];
  6. void solve(char *s){
  7. int len = strlen(s);
  8. for (int i = 0; i < len; i++) s[i] -= 32;
  9. }
  10. int main(){
  11. scanf("%s", s);
  12. char *p = s;
  13. solve(p);
  14. printf("%s\n", s);
  15. return 0;
  16. }
  17. /*
  18. 输入:abc
  19. 输出:ABC
  20. */
  21. // 下面这样写也是等价的
  22. #include <bits/stdc++.h>
  23. using namespace std;
  24. char s[110];
  25. void solve(char *s){
  26. int len = strlen(s);
  27. for (int i = 0; i < len; i++) s[i] -= 32;
  28. }
  29. int main(){
  30. scanf("%s", s);
  31. solve(s); //传递的时候,传递数组的名称,就是指针
  32. printf("%s\n", s);
  33. return 0;
  34. }
  35. // 下面这样写也是等价的
  36. #include <bits/stdc++.h>
  37. using namespace std;
  38. char s[110];
  39. void solve(char s[]){ //形参,写成char s[],这也是个指针
  40. int len = strlen(s);
  41. for (int i = 0; i < len; i++) s[i] -= 32;
  42. }
  43. int main(){
  44. scanf("%s", s);
  45. solve(s);
  46. printf("%s\n", s);
  47. return 0;
  48. }