黑马程序员技术交流社区
标题:
一个关于字符指针的小问题
[打印本页]
作者:
oucding
时间:
2015-3-22 15:40
标题:
一个关于字符指针的小问题
#include<stdio.h>
int main(){
char *name = "Jack";
name[3] = 'h';
printf("%s\n",name);
}
为啥这个程序不能运行呢,我断点调试的时候 蹦到 name[3] = 'h'; 这一句就崩溃了,为啥呢?指针没学好,愁死了,哪位大侠给指点指点。
作者:
一步一个脚印
时间:
2015-3-22 15:53
int main(){
//定义一个指向字符的指针并用字符串常量(表示的是指针常量)初始化。
char *name = "Jack";
//字符串常量不能改变
//name[3] ='h';
printf("%s\n",name);
return 0;
}
作者:
陨石
时间:
2015-3-22 15:56
因为指针指向的是常量地址,常量无法修改
改成数组
char name [4] = "Jack";
就好了
作者:
一步一个脚印
时间:
2015-3-22 15:56
注意哦字符串常量是不能改变的,如果你想改变一个字符串,可以用字符数组进行保存字符串。比如上面 改成 char name[]='"jack",就可以运行你下面的代码了
作者:
oucding
时间:
2015-3-23 08:53
一步一个脚印 发表于 2015-3-22 15:53
int main(){
//定义一个指向字符的指针并用字符串常量(表示的是指针常量)初始化。
char *name = ...
感谢,现在知道了
作者:
youga
时间:
2015-3-23 09:01
原来如此。。。。
作者:
流转少年
时间:
2015-3-23 09:13
学知识了,好多细节性问题都是不太注意啊!加油楼主!
作者:
舒少勇
时间:
2015-3-23 09:29
用 char *name 定义的字符串是不可改变的 用char name[3] 是可以改变的 这个问题老师课堂上面讲过了啊
作者:
远汀枫舞
时间:
2015-3-23 12:57
用指针定义的字符 , 会分配 到 字符串常量中去 ,是不可改变的 。
这个课件上有 。
/*
1.常量区
存放一些常量字符串
2.堆
对象
3 栈
局部变量
掌握:
1,利用数组
char name[] = {}="";
字符串里面的字符是可以修改的
经常修改
2.利用指针
char *name =" ";
字符串里面的字符其实是一个常量字符串,里面的字符是不能修改
字符串经常使用
*/
#include <stdio.h>
int main()
{
char *names[5]={"jace","jack","rose"}; // *name[]=&name[] []= name[]
//char names2[2][10] = {"jace","jack","rose"};
printf("%s\n",names[0]);
printf("%c\n",*names[0]); // 此时 是以 name[0] 再为 一个字符串。
char name[20];
printf("请输入姓名:\n");
scanf("%s",name );
printf("%c\n",name[3]);
//printf("刚才输入的字符串是:%s\n",name);
return 0;
}
//字符串数组 。
void test2(){
//char *name = "jack";
//char *name2= "rose";
//整型数组 , 指针数组
//int ages[5];
//指针数组(字符串数组)
char *names[5]={"jace","jack","rose"}; // *name[]=&name[] []= name[]
//char names2[2][10] = {"jace","jack","rose"};
printf("%s\n",names[0]);
printf("%c\n",*names[0]);}
void test()
{
//字符串变量
char name[] = "itcast";//栈 , 局部变量 ,可以随时改
name[0]= 'T';
printf("%s\n",name);//字符串输出
// "it"='i'+'t'+'\0'
//指针变量name2指向了字符串的首字符
//字符串常量
char *name2 = "it";//char *name=name 。 常量 区 , 不可随意更改。
char *name3 = "it";
// *name2 = 'T';//系统崩溃
printf("%p\n%p\n",name2,name3);
printf("%c\n",*name2);
printf("%s\n",name2); // 字符串 输出
}
作者:
Reliable
时间:
2015-3-23 13:03
学习了,非常感谢
作者:
wzboy
时间:
2015-3-23 14:19
这个问题视频上有讲的。
作者:
futaoheima
时间:
2015-3-23 16:54
我还没懂
作者:
Ammar
时间:
2015-3-23 17:06
指针定义的字符串 是字符串常量 无法更改的
作者:
执念
时间:
2015-3-23 18:05
水的精致
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2