发布网友 发布时间:2024-10-20 23:31
共5个回答
热心网友 时间:2024-11-13 06:18
1,char *a="abcd";这个是指针常量吗?热心网友 时间:2024-11-13 06:19
几乎每个初学C语言的人都有这样的困惑,首先"abcd"是字符串常量,是无法更改的。首先,a是一个指向char类型变量的指针,假设“haha”在内存的起始地址为1,那么a的值就为1,“lala”的内存起始地址为100,b的值就为100, 通过a=b,只是将a的值修改为100,也就是说a指向了“lala”,但是内存中起始地址为1的内容任然是“haha”,你修改的只是a的指向。
热心网友 时间:2024-11-13 06:19
一、你以字符串的形式输出,实则就是从数组的首地址一个个检索值输出,因为C语言中没有字符串变量,就用数组来等效构造,所以,就输出它的值了,指针就是变量,只不过是用来存放地址的变量罢了,当然不是指针常量了。追答strcpy(str1,str2)函数是把字符串str2复制给字符串str1,所以,应该不是用指针来承接,而是用数组
热心网友 时间:2024-11-13 06:20
这里a,b放的是地址没错,a=b就是相当于将a里面原来的地址值改成了和b一样,这样的a里面的地址就会指向“lala”,原来的“haha”也还是会存在于内存中。追问但输出a时应该是lala的地址呀,但输出a时却是整个字符串lala.(printf("%s\n",a))追答输出时肯定要找到地址对应的值啊 ,不会是输出一个地址的!
热心网友 时间:2024-11-13 06:21
你以%s输出就是输出整个字符串,当你以%d输出时就是字符串的首地址了。