serd
Просветленный
(20241)
3 года назад
А что именно ты хочешь обнулять? В функции ты перезаписываешь значение первого элемента массива результатом инкрементирования аргумента а, переданного по указателю. Что обнуляй, что не обнуляй массив - результат не изменится.
kh fjkgЗнаток (328)
3 года назад
Почему не обнуляется этот первый элемент массива если сделать так arr[0]=0;
kh fjkgЗнаток (328)
3 года назад
void func(int *a)
{
static int arr[50]={0};
int *ptr=arr;
arr[0]=0; //////////////
ptr[0]=++*a;
printf("%d\n", ptr[0]);
}
kh fjkgЗнаток (328)
3 года назад
Блииин, это strncpy чудил. Совсем забыл что он нуль терминатор не вставляет.
strncpy_s вставляет.
Black
Гуру
(3622)
3 года назад
static по определению сохраняет значения, которые остались после выхода из функции. Хочешь обнуленный массив - убери static или обнуляй его вручную, через цикл или memset
kh fjkgЗнаток (328)
3 года назад
Почему не обнуляется этот первый элемент массива если сделать так arr[0]=0;
kh fjkgЗнаток (328)
3 года назад
void func(int *a)
{
static int arr[50]= { 0 } ;
int *ptr=arr;
arr[0]=0; //////////////
ptr[0]=++*a;
printf("%d\n", ptr[0]);
}
kh fjkgЗнаток (328)
3 года назад
А, ну да.
Это переменная А ведь "виновата"
А я к массиву пристал
kh fjkgЗнаток (328)
3 года назад
Блииин, это strncpy чудил. Совсем забыл что он нуль терминатор не вставляет.
strncpy_s вставляет.
Евгений Высочин
Просветленный
(38043)
3 года назад
void func(int *a)
{
static int arr[50];
for(int i = 0; i < 50; i++) arr[i] = 0;
int *ptr=arr;
ptr[0]=++*a;
printf("%d\n\n", ptr[0]);
}
kh fjkgЗнаток (328)
3 года назад
Ага.
Это static char arr[50]={0};
Почему то массив не обнуляет от функции к функции
int func()
{
static int a=0;
a++;
return a;
}
int main()
{
printf("%d\n",func());
printf("%d\n",func());
}
Николай Веселуха
Высший разум
(385193)
3 года назад
Объект в функции объявляют статическим с целью сохранения результата после выхода из функции. Например, при рекурсивных вызовах функции, обнулять можно следующим образом:
#include <stdio.h>
#include <stdlib.h>
int sum(int n) {
static int s = 0;
if (!n) {
// принцип обнуления
int res = s;
s = 0;
return res;
}
s += n;
return sum(n - 1);
}
int main() {
int a = sum(10);
int b = sum(20);
int c = sum(30);
printf("a: %i\nb: %i\nc: %i\n", a, b, c);
system("pause > nul");
}
Массив должен быть static
https://onlinegdb.com/KD9FNzzY0
void func(int *a)
{
static int arr[50]={0};
int *ptr=arr;
ptr[0]=++*a;
printf("%d\n", ptr[0]);
}
int main()
{
int a=1;
func(&a);
func(&a);
func(&a);
}