C语言,在if语句块里给int*指针变量赋值,出了if语句块值就不见了
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int evalRPN(char** tokens, int tokensLen ) {
// write code here
// 逐个压栈。当遇到操作符时,取栈中前两个数做操作数,删除两个操作数,然后得到的结果压入栈中
// 创建栈
int *num = (int *)malloc(sizeof(int)*tokensLen);
// 栈元素记录数
int counter = 0;
// 取字符压栈
for(int i=0;i<tokensLen;i++)
{
// 判断是操作数还是操作符
// 取每一个字符串的第0个字符
char c_now = *(*(tokens+i));
if(c_now=='+')
{
// +操作
}
else if(c_now=='-')
{
// -操作
}
else if(c_now=='*')
{
// *操作
}
else if(c_now=='/')
{
// /操作
}
else
{
// 转为数字压栈
char *s = *(tokens+i);
*(num + counter) = strtol(s, NULL, 10);
printf("%d\n", *(num+counter));
counter ++;
}
}
for(int i=0;i<counter;i++)
{
printf("%d, ", *(num+counter));
}
printf(" \n");
free(num);
return 0;
}
int main()
{
int size_ss = 5;
int size_s = 1;
char **s = (char **)malloc(sizeof(char *)*size_ss*size_s);
*(s) = "2";
*(s+1) = "1";
*(s+2) = "+";
*(s+3) = "4";
*(s+4) = "*";
evalRPN(s, size_ss);
return 0;
}
下面是结果
2
1
4
0, 0, 0,
求解答。