我试图理解为什么这句话不起作用。
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:
答案 0 :(得分:3)
您无法使用=
进行分配,请改为使用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;
}
答案 1 :(得分:2)
C按值传递参数。当函数退出时,im
的任何变化都会丢失。如果您想保留更改。传递指针的地址。然后你可以改变你传递的地址的指针。
答案 2 :(得分:1)
试试这个:
char resp[] = "123456789";
void getValue(char **im)
{
*im = resp;
printf("\n%s\n",*im);
}
您需要将指针传递给指针作为程序参数。