【发布时间】:2017-02-08 16:49:40
【问题描述】:
我有一个函数,里面有两个数组。 在第一个循环中,我将指针初始化为 NULL 在第二个循环中,我将每个指针设置为指向另一个数组中的一个字符。因此,在指针数组位置 [0] 中有一个指向字符数组位置 [0] 等的 char 指针。 在第三个循环中,我打印出每个字符的值和内存位置。
但是,我的代码没有按预期工作,导致 IDE 崩溃:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void printName(char *pointer);
int main (void)
{
char *name = "Example";
printName(*name);
return 0;
}
void printName(char *pointer)
{
char arrayOfChars[10];
char arrayOfPointers[10];
for(int i = 0; i < 10; i++)
{
arrayOfPointers[i] = NULL;
}
for(int i = 0; i <= 10; i++)
{
arrayOfPointers[i] = &arrayOfChars[i];
}
for (int i = 0; i <= 10; ++i)
{
printf("Value: %d, addr: %p\n", pointer[i], pointer+i);
}
}
【问题讨论】:
-
printName(*name);->printName(name); -
并将第二个循环更改为
int i = 0; while( pointer[i] != '\0' ){ arrayOfPointers[i] = &pointer[i]; i++; },将第三个循环更改为i = 0; while( pointer[i] != '\0' ){ printf("Value: %d, addr: %p\n", pointer[i], arrayOfPointers[i]); i++; }哦,还有char arrayOfPointers[10];- >char* arrayOfPointers[10]; -
检查你的编译器错误信息...如果没有,那么你需要重新配置编译器