字符指针
字符指针
字符串打印说明%s
#include <stdio.h>
int main(int argc, char const *argv[])
{
char str[] = "hello mike";
//1、%s,从首元素开始打印,直到结束符位置
//2、%s,操作的是指针所指向的内容
printf("str = %s\n", str);
//2、str是首元素地址,如果想打印str本身的值,%p,%x,%d,%o
printf("str = %p\n", str);
//3、*str代表第0个元素,它是char类型
printf("str3 = %s\n", *str);
printf("%s\n", *str);
//%s跟下面那个是一样效果的,这里是%s处理的流程
int i = 0;
while(str[i] != '\0')// while( *(str+i) != '\0')
{
printf("%c\n", str[i]);//*(str+i)和str[i]等价
i++;
}
return 0;
}
字符指针
#include <stdio.h>
int main(int argc, char const *argv[])
{
char str = "hello";
str[0] = '1';
*(str+1) = '2';
printf("str = %s\n", str);//12llo
//定义一个指针,指向首元素
char *p = NULL;
p = &str[0];
p = str;//数组名就是首元素地址
*p = 'a';
p++;
*p = 'b';
printf("str = %s\n", str);//abllo
printf("p = %s\n", p);//bllo
return 0;
}
const修饰字符指针
#include <stdio.h>
int main(int argc, char const *argv[])
{
char buf[] = "hello";
char *p1 = buf;
*p1 = 'a';//改变指针所指向的内存
p1 = NULL;//改变指针变量本身
//const修饰*,指针所指向的内存不能修改
const char *p2 = buf;
//*p2 = 'a';//err
p2 =NULL;//ok
return 0;
}
//char *strcpy(char *dest, const char *src);后面那个字符串是只读形式不能修改