前言
写这篇文章,是因为同学在leetcode上遇到了这样一个错误:
- 题目:Two Sum
- 代码如下:
int* twoSum(int* nums, int numsSize, int target)
{
int i,j;
int res[2]; /* 加上static之后正常运行 */
for (i=0; i<numsSize; i++) {
for (j=i; j<numsSize; j++) {
if (nums[i]+nums[j]==target) {
res[0]=i;
res[1]=j;
break;
} else {
continue;
}
}
}
return res;
}
- 运行时出现错误:
load of null pointer of type 'const int'
- Google之后发现,在声明res[2]的时候加上static就可以正常运行。于是在《The C Programming Language》(P70,4.6 静态变量)找到了相关内容:
用static限定外部变量与函数,可以将其后声明的对象的作用域限定为被编译源文件的剩余部分。该外部变量/函数除了对该所在的文件可见外,其他文件都无法访问。
用static声明内部变量,则该变量是某个特定函数的局部变量,只能在该函