关于指针,该怎么解决
关于指针
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strcmp(char *source, char *dest)
{
int sour_length = strlen(source);
int dest_length = strlen(source);
int i;
if(sour_length != dest_length)
{
printf("The length of sourse are not equal to dest`s\n");
return 0;
}
else
{
for(i=0; i<sour_length; i++)
{
if(source[i] != dest[i])
{
printf("sourse`s %c are not equal to dest`s %c\n",source[i],dest[i]);
return 0;
}
else
{
continue;
}
//printf("sourse are equal to dest\n");
}
}
return 1;
}
void main()
{
int i;
//char *source初始化为0,或NULL 运行时都会报错
char source[100];
char dest[99];
printf("Please inputs strings to compare:\n");
if(scanf("%s%s",source,dest))
{
i = strcmp(source,dest);
i?printf("sourse are equal to dest\n"):printf("sourse are not equal to dest\n");
system("pause");
}
else
{
return;
}
}
在main函数中声明的两个数组,如果改为指针,病初始化为NULL,运行时错误,怎么回事,不是说可以初始化为NUL吗
------解决思路----------------------
char *source = NULL;
source = new char[100];
------解决思路----------------------
说可以初始化为NUL 并不表示运行时可以用NULL。
scanf("%s%s",source,dest) 必须source dest 都不是NULL
------解决思路----------------------
初始化为null没有问题,但是不能读取null指针指向的内容。 所以scanf会崩溃。
------解决思路----------------------
初始化为指针为NULL,说明你这个指针指向地址为0的空间(没有用的),但是你又要对这个地址为0的空间赋值,这是不可以的地址0的空间是没用的,除非你重新制定个地址给指针,才能赋值。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int strcmp(char *source, char *dest)
{
int sour_length = strlen(source);
int dest_length = strlen(source);
int i;
if(sour_length != dest_length)
{
printf("The length of sourse are not equal to dest`s\n");
return 0;
}
else
{
for(i=0; i<sour_length; i++)
{
if(source[i] != dest[i])
{
printf("sourse`s %c are not equal to dest`s %c\n",source[i],dest[i]);
return 0;
}
else
{
continue;
}
//printf("sourse are equal to dest\n");
}
}
return 1;
}
void main()
{
int i;
//char *source初始化为0,或NULL 运行时都会报错
char source[100];
char dest[99];
printf("Please inputs strings to compare:\n");
if(scanf("%s%s",source,dest))
{
i = strcmp(source,dest);
i?printf("sourse are equal to dest\n"):printf("sourse are not equal to dest\n");
system("pause");
}
else
{
return;
}
}
在main函数中声明的两个数组,如果改为指针,病初始化为NULL,运行时错误,怎么回事,不是说可以初始化为NUL吗
------解决思路----------------------
char *source = NULL;
source = new char[100];
------解决思路----------------------
说可以初始化为NUL 并不表示运行时可以用NULL。
scanf("%s%s",source,dest) 必须source dest 都不是NULL
------解决思路----------------------
初始化为null没有问题,但是不能读取null指针指向的内容。 所以scanf会崩溃。
------解决思路----------------------
初始化为指针为NULL,说明你这个指针指向地址为0的空间(没有用的),但是你又要对这个地址为0的空间赋值,这是不可以的地址0的空间是没用的,除非你重新制定个地址给指针,才能赋值。