C程序定义一指针变量,直接令它赋值为NULL,不对它用malloc申请内存可以么?赋值和申请内存到底有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C程序定义一指针变量,直接令它赋值为NULL,不对它用malloc申请内存可以么?赋值和申请内存到底有啥区别相关的知识,希望对你有一定的参考价值。
用不用malloc,要看指针变量的具体用途。简单的说如果要给其一个单独的新值,是必须用malloc分配内存的。如果要给这个指针变量一个已经存在的值,则不需要。简单的说赋值是拿别人的东西自己来用,而不需要管这个东西怎么来的。当然这还要考虑你的赋值操作是否合乎逻辑,合乎语法,是否有意义。
而内存分配完毕是必须进行赋值操作的,否则你的内存分配操作就无意义且是非常危险的行为。
分配内存是用于存放某些值的。犹如鸡要下蛋,需要先有一个窝。这个窝是需要你事先建好。否则鸡会四处下蛋。 参考技术A 当然可以!
如果申请后复制为NULL,则该指针为空,不指向任何内存块,
用malloc()申请内存后该指针就指向该内存的首地址。然后就可以对这块内存进行操作了 参考技术B 申请内存才可以保存赋值啊
创建变量的时候申请内存,然后可以赋值 参考技术C 只要指向的内存区域存在就没问题
c语言指针变量?
本程序将字符读入数组s中,直到用户键入ENTER键为止,然后显示读入的串。(指针变量访问字符数组)
参考技术A #include <stdio.h>#include <malloc.h>
int main(void)
char *s, *t, *ch;
int n = 0, i;
s = t = NULL;
ch = (char *)malloc(sizeof(char));
while (scanf("%c", ch))
if (*ch == 10)
break;
n ++;
t = s;
s = (char *)malloc(sizeof(char) * n);
if (t != NULL)
for (i = 0; i < n - 1; i ++)
s[i] = t[i];
free(t);
t = NULL;
s[n - 1] = *ch;
puts(s);
free(ch);
free(s);
return 0;
参考技术B 先定义一个足够大的字符数组,定义一个指向字符的指针,并初始化指向组字符数首字节。将字符读入数组s中,直到用户键入回车符为止,然后将字符数组中的回车符改为串结束符,再用输出语句输出字符数组显示读入的串。 参考技术C
#include <stdio.h>
int main()
char s[1000],*p;
for(p=s;(*p=getchar())!='\\n';p++)
putchar(*p);
return 0;
本回答被提问者和网友采纳以上是关于C程序定义一指针变量,直接令它赋值为NULL,不对它用malloc申请内存可以么?赋值和申请内存到底有啥区别的主要内容,如果未能解决你的问题,请参考以下文章