指针与字符串:(const)char *p2 = "lmj";定义的是一个字符串常量!符串常量,正因为是常量,所以它内部的字符是不允许修改的。
2013-08-09 11:31
459 查看
int main(){
char *p2 = "lmj";
*p2 = 'L';
printf("%s", p2);
return 0;
}
程序运行结果:段错误
看起来似乎是可行的,但这是错误代码,错在第2行。首先看第1行,指针变量p2指向的是一块字符串常量,正因为是常量,所以它内部的字符是不允许修改的。
有人可能搞蒙了,这里的第1行代码char *p2 = "lmj";跟第一种方案中的第2行代码char a[] = "lmj";不是一样的么?这是不一样的。
char a[] = "lmj";定义的是一个字符串变量!
char *p2 = "lmj";定义的是一个字符串常量!严格来说,应该写成const char *p2 = "lmj";,前面加个常量修饰符
定义字符串的时候,应该考虑清楚:以后程序是否对字符串的内容进行修改,如果修改,定义为数组形式,若不修改,定义为指针形式,定义为一个字符串常量
char *p2 = "lmj";
*p2 = 'L';
printf("%s", p2);
return 0;
}
程序运行结果:段错误
看起来似乎是可行的,但这是错误代码,错在第2行。首先看第1行,指针变量p2指向的是一块字符串常量,正因为是常量,所以它内部的字符是不允许修改的。
有人可能搞蒙了,这里的第1行代码char *p2 = "lmj";跟第一种方案中的第2行代码char a[] = "lmj";不是一样的么?这是不一样的。
char a[] = "lmj";定义的是一个字符串变量!
char *p2 = "lmj";定义的是一个字符串常量!严格来说,应该写成const char *p2 = "lmj";,前面加个常量修饰符
定义字符串的时候,应该考虑清楚:以后程序是否对字符串的内容进行修改,如果修改,定义为数组形式,若不修改,定义为指针形式,定义为一个字符串常量
相关文章推荐
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- char * const p; //常量指针,p的值不可以修改  char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
- char * 与 char [] 区别,char *[] 与 char[][]区别。字符串指针的数组与二维char数组区别。字符串常量赋予指针与字符数组区别。"字符串"等价于其首元素"字"的地址
- 一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。 Input 第一行两个字
- 一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。 小王对既是素数又是回文的
- c为什么定义字符串常量,而且要放入到常量区,还要用一个char *,类型定义
- 用字符数组和字符串指针定义字符串常量时需要注意的一点
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- 编写一个业务函数,实现字符串(前后各有三个空格,单词前后也均有空格) " i am student, you are teacher " , 各个单词首字符大写
- 练习1-23:编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。在C语言程序中,注释不允许嵌套
- 定义字符指针数组分别指向5个字符串常量,从小到大输出字符串内容
- 常量指针 给定一个字符串,在目标字符串中查找任意字符的第一个字符,返回指针
- 【1-23】编写一个删除C语言程序中所有的注释语句。要正确处理带引号的字符串与字符常量。再c语言中,注释不允许嵌套。
- SQL2000的一个数据库用户删除不掉,提示"因为选定的用户拥有对象,所以无法删除该用户"
- "typedef char * pc; const pc a;“ 为什么是a而不是a所指向的字符为const
- 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bccced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中
- 字符串赋值给字符指针(char *a="hello")的正确理解方式
- 【C语言】为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- 编程序将一个字符串的前N个子字符送到一个字符型数组中去,然后再加上一个'\0'(不允许使用strcoy(str1,str2,n)函数)。