• C语言字符指针


    字符指针

    1.字符指针普通用法
      字符指针顾名思义就是存放字符的地址,并且字符指针加减整数是向前或者向后走一个char的字节,在解引用操作的时候访问权限也是一个字节。

    #include 
    int main () {
    	char ch = 'a';
    	char * p = &ch;
    	*p = 'z';
    	printf("%c" , ch);	// z
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.字符指针指向一个字符串
      字符指针指向一个字符串时,本质上是存放字符串第一个字符的地址,通过指向第一个字符的地址来依次寻找后面的字符。

    注:字符指针指向的字符串是常量字符串,存放在常量区,是不可以改变的。 所以字符指针最好用const修饰,否则当不经意间修改会导致程序崩溃。

    #include 
    int main () {
    	
    	// hello world 存放在常量区是不可以修改的
    	char * str = "hello world"; 
    	*str = 'a'; // error
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    例子:

    #include 
    int main () {
    	const char * p1 = "abc";
    	const char * p2 = "abc";
    	
    	char str1[] = "abc";
    	char str2[] = "abc";
    	
    	if (p1 == p2) {
    		printf("p1 == p2\n");
    	} else {
    		printf("p1 != p2\n");
    	}
    	
    	if (str1 == str2) {
    		printf("str1 == str2\n");
    	} else {
    		printf("str1 != str2\n");
    	}
    /*
    	result:
    		p1 == p2
    		str1 != str2
    		解析:
    			1. 字符指针指向的字符串是常量字符串,是不可以修改的,当执行 
    			**const char * p1 = "abc"**时,先会在常量区中寻找,若没有
    			则创建。执行**const char * p2 = "abc"**,会在常量区中寻找,
    			因为常量区已经有"abc"了,所以直接把首字符地址赋值给p2,所以
    			p1和p2指向的地址是相同的。
    			
    			2. 而str1和str2是字符数组是局部变量在栈上开辟,每一次开辟都
    			会创建新的空间,所以str1和str2指向的数据是一样的,但是存放
    			首元素的地址是不同的。
    */
    	
    	return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    关系数据库是个啥
    Spring Bean循环依赖学习与探究
    人工智能(AI)基础知识学习库
    【英语语法】定语从句
    TypeScript 泛型(generic) 入门介绍
    priority_queue简单实现(优先级队列)(c++)
    面向“三创”人才培养的计算机类专业课程体系与教学内容改革研究
    模板字符串
    JDBC封装增删改操作
    【Linux operation 49】实现ubuntu-22.04.1允许root用户登录图形化桌面
  • 原文地址:https://blog.csdn.net/cccyi7/article/details/131147065