字符指针
#include <bits/stdc++.h>using namespace std;const int N = 110;char s[] = "Hello";int main(){ char *p = s; printf("%s\n", s); printf("%c\n", s[4]); printf("%c\n", *p); printf("%c\n", *(p + 4)); printf("%c\n", *p + 4); cout << p << '\n'; // 需要注意的是,字符串的以“\0”结尾, // 所以对于“Hello”这个字符串实际上含有6个字符 // 因为表示字符串结尾标志的”\0“是自动添加的。 for (int i = 0; s[i] != '\0'; i++) cout << s[i]; puts(""); return 0;}
// 字符串的创建,含有多种语法// 比较重要的一点是初始化时可以不指定数组长度char duckName[6] = {'D','a','v', 'i', 'd'};char duckName[6] = "David";char duckName[] = "David";
#include <bits/stdc++.h>using namespace std;const int N = 110;char s[N];void f1(char s[]){ printf("%s\n", s);}void f2(char *s){ for (; *s != '\0'; s++) printf("%c", *s); puts("");}int main(){ scanf("%s", s); f1(s); f2(s); return 0;}
#include <bits/stdc++.h>using namespace std;const int N = 110;char s[N];int len;void f(char *s){ for (int i = 0; i < len; i++) printf("%c", *(s + i)); puts("");}int main(){ scanf("%s", s); len = strlen(s); f(s); return 0;}
指针与字符串
// 字符串的表示形式#include <bits/stdc++.h>using namespace std;int main(){ char s1[] = "Hello s1!"; printf("%s\n", s1); char *s2 = "Hello s2!"; // 把字符串的第1个元素的地址,赋值给了s2 printf("%s\n", s2); return 0;}// %s 是输出字符串时用到的格式符,在输出项中,给出字符指针变量名,则系统先输出它所指的一个字符数据// 然后自动使 s2 加1,使之指向下一个字符// 然后再输出一个字符// 直到,遇到字符串结束标志'\0'为止
// 字符串指针,作为函数参数// 可以改变字符串里的内容#include <bits/stdc++.h>using namespace std;char s[110];void solve(char *s){ int len = strlen(s); for (int i = 0; i < len; i++) s[i] -= 32;}int main(){ scanf("%s", s); char *p = s; solve(p); printf("%s\n", s); return 0;}/*输入:abc输出:ABC*/// 下面这样写也是等价的#include <bits/stdc++.h>using namespace std;char s[110];void solve(char *s){ int len = strlen(s); for (int i = 0; i < len; i++) s[i] -= 32;}int main(){ scanf("%s", s); solve(s); //传递的时候,传递数组的名称,就是指针 printf("%s\n", s); return 0;}// 下面这样写也是等价的#include <bits/stdc++.h>using namespace std;char s[110];void solve(char s[]){ //形参,写成char s[],这也是个指针 int len = strlen(s); for (int i = 0; i < len; i++) s[i] -= 32;}int main(){ scanf("%s", s); solve(s); printf("%s\n", s); return 0;}