malloc-C语言字符指针问题求解答

问题描述

C语言字符指针问题求解答
main()
{ char * a;
a=(char * )malloc(40);
scanf(""%s""* a );
}
上面代码中的scanf(""%s""* a);这行为什么是合法的?请赐教!
不好意思第一次代码输错了-_-

解决方案

创建了一个40个字符长度的缓冲区,然后输入字符到这个缓冲区中。你测试下就知道了。

解决方案二:

 a=(char)malloc(40);  看不懂这要干嘛,怎么不是指针呢

解决方案三:
这不是指针吧,指针不是得先定义*a吗?还有与楼下一样,你那步骤是干嘛呢?

解决方案四:
这不是指针吧,指针不是得先定义*a吗?还有与楼下一样,你那步骤是干嘛呢?

解决方案五:
应该是char* a
类型用错了。

解决方案六:
从方法上本身是合法的,执行时,得不到想到的结果,最坏的情况下是程序core。此依赖于 scanf,*a的值。 当*a的值为0时,scanf函数内部可能做的判断,
不做处理,但如果是其它值,它认为是一个合法的地址,就会往地址中写入数据,程序core dump

时间: 2024-07-30 01:40:34

malloc-C语言字符指针问题求解答的相关文章

c语言-求问一个C语言字符指针的问题

问题描述 求问一个C语言字符指针的问题 #include void Initialize (char * a, char * b) { a[0] = 'T'; a[1] = 'h'; a[2] = 'i'; a[3] = 's'; a[4] = ' '; a[5] = 'i'; a[6] = 's'; a[7] = ' '; a[8] = 'A'; a[9] = ''; b = a; b[8] = 'B'; } #define ARRAY_SIZE 10 char a[ARRAY_SIZE];

c语言-C语言数组定义问题,求解答

问题描述 C语言数组定义问题,求解答 int b; scanf_s("%d", &b); int Array[]; int i; for (i = 0; i<b; i++) { scanf("%d", &Array[i]); } 这个为什么报错呀 解决方案 首先你的数组里面是不确定的,不能定义长度不确定的数组,除非你是用动态内存区定义.应该改为Array[100]或者其他的,其次sacnf后面不应该有_s 解决方案二: 你只是定义了数组, 但是

一道c语言的题目,求解答

问题描述 一道c语言的题目,求解答 有函数原型为void f(int,int *);主函数中有变量定义:int a,*p=&a,b[10];则下列几种调用错误的是: A·f(a,p) B·f(*p,b) C·f(b,&a) D·f(*p,p) 我的想法是:子函数要接收一个整形变量,一个指针变量,那么B选项中b不是指针常量么? 求助大神们解答!谢谢! 答案是C 解决方案 C B中 b 是数组名,可以看作 const 的指针 C中第一个参数是b,但实际参数是 int 解决方案二: B 选项中的

c语言-C语言派寻问题求解答!!!

问题描述 C语言派寻问题求解答!!! 把一个二维实型数组a按照第0列的元素进行排序(由大到小排序,用冒泡法)例如:a[i][0]大于a[i+1][0],则i行与i+1行所有元素都要进行对换 (c语言解答) 解决方案 #include int main() { int num[3][2] = {{5,2},{3,1},{2,9}}; int temp; for(int i = 0;i<3-1; i++) { for(int j = 0;j<3-1-i; j++) { if(num[j][0]&g

malloc-C语言中的字符指针操作问题,如何释放字符指针空间?

问题描述 C语言中的字符指针操作问题,如何释放字符指针空间? 源码如下: #include #include #include void main() { char s1; char *s2 = "bbb"; char *s3 = "ccc"; s1 = (char)malloc(sizeof(s2)); strcpy(s1, s2); strcat(s1, s3); //free(s2); //free(s3); printf("%s ", s

c语言-C语言关于字符指针变量和字符数组的说法

问题描述 C语言关于字符指针变量和字符数组的说法 下列关于字符指针变量和字符数组的说法错误的是 A)字符指针变量的值可以变化 B)字符数组的值可以变化 C)字符指针变量代表了一个地址 D)字符数组代表了一个地址 ====答案选B,求解释? 解决方案 选择B.字符数组相当于指针常量. 解决方案二: 数组定义时系统给开辟内存单元,数组名相当于数组的开始地址是不能变化的 解决方案三: C语言字符指针和字符数组C语言中,为什么字符串可以赋值给字符指针变量字符数组和字符指针

c语言-C语言中指针用星号和箭头表示有区别吗

问题描述 C语言中指针用星号和箭头表示有区别吗 C语言中指针用星号和箭头表示有区别吗 p ++和i→next表达意思一样吗?菜鸟一个,请各位多多 指点下! 解决方案 C语言字符指针和字符数组的区别 解决方案二: ->在C语言中称为间接引用运算符,是二目运算符,优先级同成员运算符".". 用法: p->a,其中p是指向一个结构体的指针,a是这个结构体类型的一个成员.表达式p->a引用了指针p指向的结构体的成员a. 例如: struct T { int a; char b

c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求

问题描述 c语言先用scanf初始化了一个字符指针,之后再定义字符数组出现内存不可读,在线等,急求 #include #include int main() { char*s; scanf("%s",s); //printf("%sn",s); //int n = strlen(s); //printf("%dn",n); char ret[56]; return 0; } 解决方案 s只是指针变量,没有分配内存 char*s; s = mall

go语言-正则表达式不让指定重复字符匹配,求高手解答

问题描述 正则表达式不让指定重复字符匹配,求高手解答 50C 正则表达式不让 指定字符串的 指定连续重复个数以上 通过比如:我指以数字组成定长度为10以内的字符串,指定不允许连续6个数字及以上通过1233444444 这个不让通过1433333332 这个不让通过1531224154 这个让通过4135353331 这个让通过要求:不用预查功能因为用的go语言,这种?! ?>= ?=影响效率语法不让通过服务器端写死的,只能用一个正则筛选.求高手解答. 解决方案 1{610}|2{610}|3{6