字符指针数组的输入 | 您所在的位置:网站首页 › 字符指针数组的长度怎么设置 › 字符指针数组的输入 |
关于“c语言从键盘输入字符串到指针数组”的问题 今天敲了一段代码,遇到了从键盘输入多个字符串到指针数组的问题,在程序执行的时候出现了段错误的提示。本文主要涉及到了以下知识: 数据的存储 数组和指针 1.字符串常量的存储 c语言中字符串常量存储在静态数据区,并且有字符串结束符,直到程序运行结束它才会被销毁,所以在程序中我们把一个字符串常量赋值给一个字符指针,如: char *pChar = “Hello World!”; 其中,”Hello World!”是一个字符串常量,pChar是一个字符指针。该句相当于将字符’H’在静态数据区中的地址赋给pChar。此时,字符串常量”Hello World!”只有一份存储在静态数据区。 另外一种常见的类型是将一个字符串常量赋值给一个字符数组,而其余上面的指针形式有本质上的区别,如下: char str[] = “Hello World!”; 其中,”Hello World!”是一个字符串常量,str是一个字符数组。此时,程序会将字符串常量”Hello World!”拷贝一份到栈区(如果str是局部变量),从此将于字符串常量”Hello World!”再无联系。 2.从键盘输入字符串 从上面可以看出,我们可以给一个字符指针赋一个字符串常量,因为字符串常量在内存中真实存在且有其地址。而从键盘输入则不然,我们必须先分配一些空间用来存储键盘输入的字符串,例如: char* str = (char*)malloc(sizeof(char) * 100); scanf("%s", str); 这样我们输入的字符串就会存储在str所指向的动态空间内。对指针数组的赋值参考以上即可。 https://www.cnblogs.com/mensanu/p/7979462.html |
CopyRight 2018-2019 实验室设备网 版权所有 |