0

我试图理解为什么这个声明不起作用。

char resp[] = "123456789";
void getValue(char *im)
{
   im = resp;
   printf("\n%s\n",im);
}

int main(int argc, char *argv[])
{
    char imei[11] = {0};
    getValue(imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}

输出:

123456789
IMEI: 
4

3 回答 3

3

您不能分配 with =strcpy而是使用:

#include <stdio.h>
#include <string.h>

char resp[] = "123456789";
void getValue(char *im)
{
   im = strcpy(im, resp);
   printf("\n%s\n",im);
}

int main(int argc, char *argv[])
{
    char imei[11] = {0};
    getValue(imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}

那是因为imei是一个数组[11](不仅仅是一个指针),如果你想通过=你可以分配:

#include <stdio.h>

char resp[] = "123456789";
void getValue(char **im)
{
   *im = resp;
   printf("\n%s\n",*im);
}

int main(int argc, char *argv[])
{
    char *imei; /* Not an array but a pointer */
    getValue(&imei);
    printf("\nIMEI: %s\n",imei);
    return 0;
}
于 2013-08-24T06:14:29.037 回答
2

C 按值传递参数。当函数退出时,您对 ale 所做的任何更改im都将丢失。如果要保留更改。传递指针的地址。然后您可以更改您传递的地址处的指针。

于 2013-08-24T06:13:59.120 回答
1

尝试这个:

char resp[] = "123456789";

void getValue(char **im)
{
   *im = resp;
   printf("\n%s\n",*im);
}

您需要将指向指针的指针作为程序参数传递。

于 2013-08-24T06:10:56.210 回答