Char *p1 = “A String.” 和 char p2[] = “another String.” 写法的不同
p1指向的这个字符串是个常量, 不可改变。 程序在编译期间就为"A String."这个字符串分配了固定的空间, 它被存储在全局静态区中. 编译器只是把指针p1的指向的地址赋为“A String.”的首地址,并没有为指针p1指向的地址分配可供操作的内存(除非使用malloc),如果试图改变p1指向的字符串,则会出错(试图改变不可写内存内容的错误)。
而p2是个变量, 其内容可以被更新和改变, p2可以理解为一个不可改变其指向位置的指针, 即char * const p2, 它所占用的内存在程序运行时被自动分配和释放, 而p1占用的内存要等到整个程序结束时才被释放. 编译器为数组b分配了可供操作的存储空间.
#include <stdio.h>
void main()
{
void copy_string(char *si, char *di);
char *ss,*dd;
char from[] = "I am a student.";
char to[] = "You are a teacher.";
ss = "I am a student.";
dd = "You are a teacher.";
printf("a:%s\nb:%s\n",ss,dd);
copy_string(ss,to); //这样写没有问题
//copy_string(ss,dd); //有问题
//copy_string(from,to);//没问题
printf("\n");
printf("a:%s\nb:%s\n",ss,to);
}
void copy_string(char *si, char *di)
{
for(; *si != '\0'; si++,di++)
*di = *si;
*di = '\0';
}
分享到:
相关推荐
字符串指针字符串指针与字符数组的区别与字符数组的区别 转载
详细介绍了易如何用指针来操作字符串和字符串指针,包括指针数组传参。
指针数组为字符串排序,char* str[] = { "beijing","guangdong","shanghai" };进行排序,内涵冒泡排序和快速排序,原理:更改指针指向
用指针数组的方法将字符串排序
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
实验与指导-数组指针字符串 指针与数组区别
我们最后分析一下段2中的代码,段2中我们调用了print_array()这个函数,这个函数中形式参数是char *array[]和代码中的char *test[]一样,同为字符指针,当你把参数传递过来的时候,事实上不是把数组内容传递过来,test的...
数组例程详解 指针例程详解 字符串例程详解 PPT详细描述数组、指针和字符串在C程序中的应用
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
C++课程-3_数组指针与字符串 C++课程-3_数组指针与字符串
指针与字符串指针数组多级指针及练习PPT学习教案.PPTx
用指针数组的方法将字符串排序
分配一个与原字符串等长的字符数组; 反向拷贝一下即可。 char* reverseString(char* s) { //将q指向字符串最后一个字符 char* q = s ; while( *q ) { q++; } q -= 1 ; //分配空间,存储逆序后的字符串...
基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数的参数显示多个字符串.rar(源码)基于Keil的指针数组作为函数...
9.1 1分钟彻底理解指针的概念 9.2 大话C语言指针变量 9.3 C语言指针变量的运算 9.4 数组指针(指向数组的指针) 9.5 字符串指针(指向字符串的
字符串是存放在字符数组中的,对字符数组中的字符逐个处理时,前面介绍的指针与数组之间的关系完全适用于字符数组。通常将字符串作为一个整体来使用,用指针来处理字符串更加方便。当用指向字符串的指针来处理字符串...
实验5 数组、指针与字符串 指向类的非静态函数成员的指针和指向类的静态函数成员的指针在定义和使用上的区别,为何存在这种差别
这是老师做的PPT,关于数组指针与字符串的,转为学习C++的量身定做,非常好用,和大家分享一下,希望一起进步,谢谢!
单片机C语言实例34:用指针数组作为函数的参数显示多个字符串.txt
如何在C语言中处理“字符串”,请善用指针、数组。