![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
怎样在子函数中改变全局变量
1个回答
展开全部
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所指向的地址发生了变化。
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所指向的地址发生了变化。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |