怎样在子函数中改变全局变量

 我来答
福喜900
推荐于2016-09-18 · TA获得超过6.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:9551万
展开全部
1、全局变量就是贯穿全局的变量,若函数中出现了再定义的与全局变量相同形式的变量名,此时2、不是全局变量,而当作局部变量使用。
3、全局变量不能定义在一个函数里。
4、全局变量在最前面时,下面函数使用时不用声明,函数使用下面的全局变量时一定要声明。
5、在编译时,计算机给它分配存储单元,若没有值,则赋初值0.
6、一旦全局变量与局部变量重名,则以局部变量为主。
7、全局变量在编译时开辟地址,局部变量现调用(运行时)现开辟地址,在函数运行结束时局部变量的地址就被释放。
字符串中的字母变成大写:
[cpp] view plaincopy
#include <stdio.h>
void uppercase(char *str){
char* str_temp=str;
while(*str_temp!='\0'){
if((*str_temp>='a')&&(*str_temp<='z'))
*str_temp-=('a'-'A');
str_temp++;
}
}
int main(){
//char *str1="aBcDeF";// str1 is const string,its element can't be modified.
char str1[]="aBcDeF";
uppercase(str1);
printf("%s \n",str1);
printf("a=%d, A=%d\n",'a','A');
return 0;
}
字符串的拷贝:
[cpp] view plaincopy
#include <stdio.h>
char * strcpy_str (char *strDest,const char *strSrc)
{
// assert((strDest!=NULL)&&(strSrc!=NULL));
char *strDestCopy=strDest;
while ((*strDest++=*strSrc++)!='\0');
/***此时的strDest指向一个字符,并不是指向strDest字符串,strDestCopy事先先记住了原strDest的便于返回****这个我现在才明白/
return strDestCopy;
}
void main()
{
char *str=NULL;
char strdest[]="abcdsss";
str=strcpy_str(strdest,"hello");
printf("%s \n",str);
}
整型变量的传值:
[cpp] view plaincopy
#include <iostream>
using namespace std;
void GetMemory(int *z)
{
*z=5;
}
int main()
{
int v;
GetMemory(&v);
cout<<v<<endl;
return 0;
}
把v的地址传进去,*z是地址里的值,是v的副本。通过修改地址里的值,不需要有返回值也把v‘给修改了,因为v所指向的地址发生了变化。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式