【发布时间】:2021-02-23 09:56:36
【问题描述】:
我很困惑,在我将字符串数组的地址存储在函数内的指针中之后,它不会返回字符串,而是看起来像地址。既然p已经存储了一个数组的地址,为什么不打印对应的字符串呢?
代码如下:
#include <stdio.h>
#include <string.h>
#define SIZE 10
void findMinMaxStr(char word[][40], char *first, char *last, int size);
int main()
{
char word[SIZE][40];
char first[40], last[40];
int i, size;
printf("Enter size: \n");
scanf("%d", &size);
printf("Enter %d words: \n", size);
for (i=0; i<size; i++)
scanf("%s", word[i]);
findMinMaxStr(word, first, last, size);
printf("First word = %s, Last word = %s\n", first, last);
return 0;
}
void findMinMaxStr(char word[][40], char *first, char *last,int size)
{
int i;
first = word[0];
last = word[0];
for(i=0;i<size;i++){
if(strcmp(last,word[i])<0)
last = word[i];
if(strcmp(first,word[i])>0)
first = word[i];
}
}
如果我在函数中添加 printf 语句:
void findMinMaxStr(char word[][40], char *first, char *last,int size)
{
int i;
first = word[0];
last = word[0];
for(i=0;i<size;i++){
if(strcmp(last,word[i])<0)
last = word[i];
if(strcmp(first,word[i])>0)
first = word[i];
}
printf("first : %s, last: %s\n",first,last);
}
它可以正确打印字符串。
【问题讨论】:
标签: arrays c string function-pointers void-pointers