C语言中,为什么字符串可以赋值给字符指针变量
当你定义一个字符串 对于C来说,他才不管你的字符串是什么,有多长,他只记一个字符串开始地址,结束的话当读到0就当做结束。所以所谓字符串在C中的底层表示只是一个地址。而指针变量存的就是地址,两者可以赋值。
C中没有字符串变量,所以说“字符串可以赋值给字符指针变量”是无稽之谈。
在C语言中并没有字符串这个类型。所说的字符串就是字符数组。也就是char类型的数组。与普通数组不同的,字符串必须以\0作为结束符。而在C语言中,类型为T的一维数组,其首地址等效于该类型的一维指针,即T*型。
C语言中,能不能任意输入字符串,并使指针指向它来对它进行处理?
使用gets函数即可实现输入任意字符串。gets函数:原型:char * gets(char * buffer);功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。
用字符指针:字符指针指向一个字符串,字符指针数组处理多个字符串。
如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。
int (*p)[4]其实指向的是二位数组中的一个元素,它等价于 int p[0][4]。这里要说明的是C中的数组表示:在C中数组的实现基于指针而指针无所不能。a[1]的写法,效果上等同于 *(a+1)。
首先这并不是用指针定义字符串,只不过是把指针p指向字符串abcd的首地址,这个字符串具有一个常量地址,可以读,但是不可写,例如你想进行p[0] = e的操作是不行的。 整型数据的问题。
至于你的疑问,这个地方STRING1指向在堆上分配的内存,堆上的内存是可以给它赋值,而test1虽然是常量,但是我们并没有企图修改它,只是读取它,然后将它的值放入STRING1而已。最后一个问题。
c语言怎么输入一个字符串,并赋给字符指针
在C程序中,可以用两种方法实现一个字符串。 用字符数组实现。
首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
首先要定义一个字符指针,然后将字符串赋值赋值给它。
在C语言中,字符串常量实质是字符数组,并且它存储在静态区(不可修改)。当字符串常量作为右值(也只能作为右值)时,它的值其实就是这个字符数组的第一个字符的地址。
怎样将字符串赋给指针指示的字符串
可以用gets和fgets两个方法得到键盘输入,并且也支持输入中文字符 但是gets方法不太安全,特别在linux下会报警报 由于gets()无法知道字符串s的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓冲溢出的安全性问题。
首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
strcpy 语法格式: strcpy(目标地址,源地址)此例语法:strcpy(b,p);将源地址后的字符逐一复制到目标地址中,直到遇到结束符,如果源串中不含结束符就会造成目标数组越界。
你也可以使用 gets 函数从标准输入(通常是键盘)读入字符串,并将其赋值给指针变量。例如:char str[100];gets(str);这样做会将从键盘输入的字符串赋值给指针变量 str。但是 gets 函数已经被废弃,不建议使用。
char s;这种指针,它没有存放字符串的空间。
先输入该字符串,然后使指针数组中的指针元素指向该字符串就可以了,举个简单的例子说明一下,下面的程序依次输入五个字符串,五个指针元素分别指向这五个字符串,然后输出。
关于scanf里将得到的字符串赋给指针的地址?
1、把字符数组内容拷贝到指针所指内存中 // 。。
2、scanf(输入控制符, 输入参数);功能:将从键盘输入的字符转化为“输入控制符”所规定格式的数据,然后存入以输入参数的值为地址的变量中。
3、C语言的字符串为数组形式,而数组的名称可以表示其地址,故对字符串输入不需要加地址符。而单独的字符、整型变量等的名称不能直接表示地址,故需要加地址符。数据类型 字符串数据类型是建模在形式字符串的想法上的数据类型。
4、c语言输入字符串scanf:有了chara;a就是这个数组的第一个元素的指针,&a就是这个数组的指针;因为一维数组的第一个元素的指针和这个数组的指针是同一个地址,区别是a+1指向a,而&a+1就指向a了。